201612-2工资计算

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
//根据税后工资求税前工资
int get(int x)
{
    if (x <= 3500) return x;//工资小于3500不用交税
    int a[] = {0, 1500, 4500, 9000, 35000, 55000, 80000, 1000000};//定义好收税的区间
    int b[] = {0, 3, 10, 20, 25, 30, 35, 45};//区间对应的税率

    x -= 3500;//去掉不用交税的部分
    int tax = 0;//交的税
    for (int i = 1; i < 8; i ++ )
        if (x >= a[i - 1])//判断在哪个收税的区间
            tax += (min(x, a[i]) - a[i - 1]) / 100 * b[i];//计算对应区间要交的说,相加
    return x + 3500 - tax;//计算出工资为x时的税后工资
}

int main()
{
    int T;
    cin >> T;
    for (int i = 0; ; i += 100)//所有评测数据保证小明的税前工资为一个整百的数,枚举
        if (get(i) == T)//找到了
        {
            cout << i << endl;
            break;
        }
    return 0;
}