试题编号: 201612-2
试题名称: 工资计算
时间限制: 1.0s
内存限制: 256.0MB
因为题目中税后工资最多只有100000,所以可以从税前工资1遍历到一个售后能大于100000的工资数,每次计算在这个工资下的税后工资,和输入相比较,如果相等就输出。
//计算税后工资
int after_tax(int t) {
double tax = 0;
int tmp;
if (t <= 3500)
return t;
else {
//分别计算每一部分的工资
t -= 3500;
tmp = t;
if (t > 1500) tmp = 1500;
tax += tmp*0.03;
t -= 1500;
if (t > 0) {
tmp = t;
if (t > 3000)
tmp = 3000;
tax += tmp*0.1;
t -= 3000;
if (t > 0) {
tmp = t;
if (t > 4500)
tmp = 4500;
tax += tmp * 0.2;
t -= 4500;
if (t > 0) {
tmp = t;
if (t > 26000) tmp = 26000;
tax += tmp * 0.25;
t -= 26000;
if (t > 0) {
tmp = t;
if (t > 20000) tmp = 20000;
tax += tmp * 0.3;
t -= 20000;
if (t > 0) {
tmp = t;
if (t > 25000) tmp = 25000;
tax += tmp * 0.35;
t -= 25000;
if (t > 0)
tax += t * 0.45;
}
}
}
}
}
}
return t - tax;
}
int main() {
int T;
cin >> T;
for (int i = 1; i <= 200000; i++) {
if (after_tax(T) == i) {
cout << i << endl;
return 0;
}
}
}