CCF201612-2 工资计算(100分)
试题编号: | 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。
|
问题链接:CCF201612试题。
问题描述:工资收入是分段计税的,输入税后工资,求税前工资。(详见原问题,点击上面的链接)。
问题分析:根据税前工资算税后工资相对要容易许多,本题正好相反。
从编程方法上来说,一种是将工资段和税率写到程序逻辑中。这种做法修改程序比较难,逻辑也比较复杂。另外一种是查表法,通过查表来计算最后的结果。查表法的优点在于,单有关规定改变时,只需要调整表格,而不需要改变程序逻辑。
该问题原始数据可以建两个表格,一是工资收入段表,二是税率表。根据这两个表可以算出收入范围表,即由实际收入得到最高税率是哪一档的表。进一步的计算就变得简单许多。
程序说明:商业应用开发中,是不允许出现任何金额计算错误的,误差也是不允许的。导致金额误差有多种原因,其中,使用浮点变量是常见的一种,一点要避免使用浮点类型变量,确保金额相关的计算准确无误。
提交后得100分的C++语言程序如下:
/* CCF201612-2 工资计算 */#include <iostream>using namespace std;//#define DEBUGint salaryrange[] = {3500, 3500+1500, 3500+4500, 3500+9000, 3500+35000, 3500+55000, 3500+80000 };
int taxrate[] = {3, 10, 20, 25, 30, 35, 45};
const int SIZE = sizeof(salaryrange) / sizeof(int);int range[SIZE];int main()
{int t, s;// 计算各种收入范围range[0] = salaryrange[0];for(int i=1; i<SIZE; i++) {range[i] = range[i-1] + (salaryrange[i] - salaryrange[i-1])- (salaryrange[i] - salaryrange[i-1]) * taxrate[i-1] / 100;}#ifdef DEBUGfor(int i=0; i<SIZE; i++)cout << range[i] << " ";cout << endl;
#endif// 输入数据:cin >> t;// 计算收入范围int i;for(i=0; i<SIZE; i++)if(t <= range[i])break;// 计算税前工资if(i == 0)s = t;else {s = salaryrange[i-1] + (t - range[i-1]) * 100 / (100 - taxrate[i-1]);}// 输出结果cout << s << endl;return 0;
}
转载于:https://www.cnblogs.com/tigerisland/p/7564196.html
CCF201612-2 工资计算(100分)相关推荐
- 003. 火星文计算[100 分]
火星文计算[100 分] 题目描述 已知火星人使用的运算符号为#.$,其与地球人的等价公式如下: x#y=2*x+3*y+4 x$y=3*x+y+2 1.其中 x.y 是无符号整数 2.地球人公式按照 ...
- PTA 6 后缀表达式计算 (100 分)
Kunkun学长觉得应该让学弟学妹了解一下这个知识点:后缀表达式相对于中缀表达式更容易让计算机理解和学习.现在kunkun学长给出一串后缀表达式,你能帮他算出这个后缀表达式的值吗? 输入格式: 第一行 ...
- ##(C语言) CSP 201612-2 工资计算(打表法)(100分)
试题编号: 201612-2 试题名称: 工资计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假设他一个月的 ...
- 7-2367 计算职工工资(20 分)
7-2367 计算职工工资(20 分) 给定N个职员的信息,包括姓名.基本工资.浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出). 输入格式: 输入在 ...
- CCF201509-2 日期计算(100分)
试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有2 ...
- CCF201503-1 图像旋转(100分)【数学计算】
试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. ...
- CCF201903-3 损坏的RAID5(100分)【数学计算+文本处理】
试题编号: 201903-3 试题名称: 损坏的RAID5 时间限制: 1.0s 内存限制: 512.0MB 问题链接:CCF201903-3 损坏的RAID5 问题简述:(略) 问题分析:数学计算问 ...
- CCF201903-2 二十四点(100分)【表达式计算】
问题链接:CCF201903-2 二十四点 问题分析: 表达式计算问题,关键是对输入流进行处理,需要考虑表达式中运算符的优先级.简单的逻辑,用穷举法就可以了. 用Python语言来实现的话,问题就简单 ...
- 运筹学 美国人在计算机上实现的四,【天大作业】2019年秋学期考试《计算机软件技术基础(2)》离线作业考核试题{全套100分}...
[天大作业]{全套100分} 奥鹏在线离线作业+wx:zcjiaoyu1|+QQ:2502533676|论文 2019年秋学期考试<计算机软件技术基础(2)>离线作业考核试题 计算机软件技 ...
最新文章
- 讯飞语音识别_讯飞输入法持续功能创新 语音输入最受用户认可
- 北大教授张大庆:无线感知,让你变老也优雅
- 了解这些,你就可以在Spring启动时为所欲为了
- 如何规划令人流连忘返的网站?
- 智慧屏到底是不是鸿蒙,荣耀智慧屏究竟是电视还是“新物种”?
- linux下mysql的基本用法
- 【Linux 操作系统】Ubuntu 配置 ftp freemind adb
- LeetCode 75 Sort Colors(颜色排序)
- 体重 年龄 性别 身高 预测鞋码_【新手扫盲】身高体重性别年龄身体素质影响玩滑板吗?...
- 新手进阶:LoadRunner中Pacing的设置
- 代码整洁之道-程序员的职业素养
- 解决小程序图片上传问题
- 助焊剂各成分作用浅析
- 通过read_excel打开xls文件时,报错struct.error: unpack requires a bytes object of length 2
- oracle := 和=,oracle中 =: 和 := 分别是什么意思?
- Attention机制学习(二)使用
- 获取QQ邮箱的授权码
- 机顶盒宽带拨号失败服务器未响应,机顶盒详细错误代码.doc
- Find X3系列能实现OPPO的高端破局之梦吗?
- 中国56个民族sql语句