问题描述
试题编号: | 201612-2 |
试题名称: | 工资计算 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 输入格式 输入的第一行包含一个整数T,表示小明的税后所得。所有评测数据保证小明的税前工资为一个整百的数。 输出格式 输出一个整数S,表示小明的税前工资。 样例输入 9255 样例输出 10000 评测用例规模与约定 对于所有评测用例,1 ≤ T ≤ 100000。 |
思路
税前到税后是一个分段函数,因为T<=10000,可以先计算每一阶段的税后工资范围,再确定T对应的分段
代码
#include<stdio.h>
int main()
{
int t,i;
int a1=(int)(1500*0.97);
int a2=(int)(a1+(4500-1500)*0.9);
int a3=(int)(a2+(9000-4500)*0.8);
int a4=(int)(a3+(35000-9000)*0.75);
int a5=(int)(a4+(55000-35000)*0.7);
int a6=(int)(a5+(80000-55000)*0.65);
while(scanf("%d",&t)!=EOF)
{
int n,s;
n=t-3500;
if(n<0) s=t;
else if(n>0&&n<=a1) s=(int)(3500+n/0.97);
else if(n>a1&&n<=a2) s=(int)(3500+1500+(n-a1)/0.9);
else if(n>a2&&n<=a3) s=(int)(3500+4500+(n-a2)/0.8);
else if(n>a3&&n<=a4) s=(int)(3500+9000+(n-a3)/0.75);
else if(n>a4&&n<=a5) s=(int)(3500+35000+(n-a4)/0.7);
else if(n>a5&&n<=a6) s=(int)(3500+55000+(n-a5)/0.65);
else if(n>a6) s=(int)(3500+80000+(n-a6)/0.55);
printf("%d\n",s);
}
return 0;
}