問題描述
試題編號: | 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;
}