1. 程式人生 > >工資計算 201612-2

工資計算 201612-2

問題描述  小明的公司每個月給小明發工資,而小明拿到的工資為交完個人所得稅之後的工資。假設他一個月的稅前工資(扣除五險一金後、未扣稅前的工資)為S元,則他應交的個人所得稅按如下公式計算:
  1) 個人所得稅起徵點為3500元,若S不超過3500,則不交稅,3500元以上的部分才計算個人所得稅,令A=S-3500元;
  2) A中不超過1500元的部分,稅率3%;
  3) A中超過1500元未超過4500元的部分,稅率10%;
  4) A中超過4500元未超過9000元的部分,稅率20%;
  5) A中超過9000元未超過35000元的部分,稅率25%;
  6) A中超過35000元未超過55000元的部分,稅率30%;
  7) A中超過55000元未超過80000元的部分,稅率35%;
  8) A中超過80000元的部分,稅率45%;
  例如,如果小明的稅前工資為10000元,則A=10000-3500=6500元,其中不超過1500元部分應繳稅1500×3%=45元,超過1500元不超過4500元部分應繳稅(4500-1500)×10%=300元,超過4500元部分應繳稅(6500-4500)×20%=400元。總共繳稅745元,稅後所得為9255元。
  已知小明這個月稅後所得為T
元,請問他的稅前工資S是多少元。輸入格式  輸入的第一行包含一個整數T,表示小明的稅後所得。所有評測資料保證小明的稅前工資為一個整百的數。輸出格式  輸出一個整數S,表示小明的稅前工資。樣例輸入9255樣例輸出10000評測用例規模與約定

  對於所有評測用例,1 ≤ T ≤ 100000。

(這個題我一開始理解錯了,所以有兩種程式碼,第一個是求稅前工資,第二個是求稅後工資)

參考程式碼:

#include <iostream>
using namespace std;
int main(){
double T,A;
cin >> T;
int s;
if ((T-3500)<=0)
{
s = T;
}
else
{
s = 3500;
A = T - 3500;
if (A <= 1500 * 0.97)
{
s += A / 0.97;
}
else
{
s += 1500;
A = A - 1500 * 0.97;
if (A <= 3000 * 0.9)
{
   s += A/0.9;
}
else
{
s += 3000;
A = A - 3000 * 0.9;
if (A <= 4500 * 0.8)
{
s += A/0.8;
}
else
{
s += 4500;
A = A - 4500 * 0.8;
if (A <= 26000 * 0.75)
{
s += A/0.75;
}
else
{
s += 26000;
A = A - 26000 * 0.75;
if (A <= 20000 * 0.7)
{
s += A/0.7;
}
else
{
s += 20000;
A = A - 20000 * 0.7;
if (A <= 25000 * 0.65)
{
s += A/0.65;
}
else
{
s += 25000;
s += (A- 25000* 0.65)/ 0.55;
}
}
}
}
}
}
}
cout<<s;
return 0;
}


提交結果:

程式碼長度程式語言評測結果得分時間使用空間使用
934BC++正確1000ms512.0KB
參考程式碼:

#include <iostream>
using namespace std;
//求稅後
void main(){
int s, A;
cin >> s;
double result;
if (s<=3500)
{
result = s;

else
{
result = 3500;
A = s - 3500;
if (A<1500)
{
result += A*0.97;

else
{
result += 1500 * 0.97;
if (A<=4500)
{
result += (A - 1500)*0.9;

else
{
result += 3000 * 0.9;
if (A<=9000)
{
result += (A - 4500)*0.8;

else
{
result += 4500 * 0.8;
if (A<=35000)
{
result += (A - 9000)*0.75;

else
{
result += 26000 * 0.75;
if (A<=55000)
{
result += (A - 35000)*0.7;

else
{
result += 20000 * 0.7;
if (A<=80000)
{
result += (A - 55000)*0.65;

else
{
result += 25000 * 0.65;
result += (A - 80000)*0.55;
}
}
}
}
}
}
}
cout << result;
}