问题描述
试题编号: | 201612-2 |
试题名称: | 工资计算 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 输入格式 输入的第一行包含一个整数T,表示小明的税后所得。所有评测数据保证小明的税前工资为一个整百的数。 输出格式 输出一个整数S,表示小明的税前工资。 样例输入 9255 样例输出 10000 评测用例规模与约定 对于所有评测用例,1 ≤ T ≤ 100000。 |
代码展示:
#include<cstdio>
int main()
{
int T,s=0,r; //T表示税后薪水,S表示税前所得,r表示最大剩余量
int a[8]={0,1500,4500,9000,35000,55000,80000,1000000}; //T的最大值是10 0000 因此最后一个值要比10 0000大
int b[7]={3,10,20,25,30,35,45};
scanf("%d",&T);
if(T<=3500){
printf("%d",T); //未缴税
return 0;
}
s+=3500;
T-=3500;
for(int i=0;i<7;i++){
r=(a[i+1]-a[i])*(100-b[i])/100; //本区间最大剩余量(最大工资所得)
if(T<=r){
s+=100*T/(100-b[i]); break;
}else{
s+=(a[i+1]-a[i]);
T-=r;
}
}
printf("%d",s);
}