欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

CCF-CSP 201612-2 工资计算(C++满分代码)

发布时间:2025/6/17 c/c++ 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 CCF-CSP 201612-2 工资计算(C++满分代码) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题描述
试题编号: 201612-2
试题名称: 工资计算
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为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; struct salary {int at; //after-taxint bt; //before-tax }ms[1005]; int main() {int S,T;cin>>T;if(T<=3500){cout<<T<<endl; return 0;}for(int i=36;i<=1000;i++)ms[i].bt=i*100;for(int i=100000;i>3500;i-=100){int A=i-3500,sum=0; //sum是税的总和,因为S为整百的数,所以sum也是整数int r=A; //r为剩余if(r>80000){sum+=(r-80000)*0.45; r=80000;}if(55000<r&&r<=800000){sum+=(r-55000)*0.35; r=55000;}if(35000<r&&r<=55000){sum+=(r-35000)*0.3; r=35000;}if(9000<r&&r<=35000){sum+=(r-9000)*0.25; r=9000;}if(4500<r&&r<=9000){sum+=(r-4500)*0.2; r=4500;}if(1500<r&&r<=4500){sum+=(r-1500)*0.1; r=1500;}if(0<r&&r<=1500){sum+=(r*0.03);}ms[i/100].at=i-sum;// cout<<i<<" -> " << ms[i/100].at<<" sum= "<<sum<<" r="<<r<<" A="<<A<<endl;}for(int i=36;i<=1000;i++){if(ms[i].at==T)cout<<ms[i].bt<<endl;}return 0; }

思路与总结:
反着求税前工资比较困难,自己先把每个工资对应的税后工资计算出来,然后再用for循环去线性查找出对应的税前工资,应该有更好的思路和代码。
注意:不要再犯 if(0<a<100)、
if(a<b<c)类似于这种的低级错误了。

总结

以上是生活随笔为你收集整理的CCF-CSP 201612-2 工资计算(C++满分代码)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。