ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【CSP】【Java】工资计算

2020-03-08 11:41:10  阅读:405  来源: 互联网

标签:小明 Java 3500 工资 超过 1500 4500 CSP


问题描述

小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为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。


这道题可是坑了我个坑呀,都是自己刚开始就没读清楚题目的要求结果就----白打了好长时间。

  • 先是没看清已知与所求,结果自己按照顺序思维蹭蹭往下写,繁杂的计算。
  • 再是没看清题目的工资都是整百元

之后就思维混乱的,没啥心思再干了,去百度了下各位大神的做法。我其中借鉴了一位大神的做法,思考了片刻之后终于解决。
借鉴网址:https://blog.csdn.net/sunjinshengli/article/details/78820845

思考过程

这个问题并不复杂。简单分析一下:
工资的计算公式如下:
T = S - tax
其中,T为税后工资,S为税前工资,tax为需缴纳的税款,并且tax与S存在函数关系:
tax = f(S)
这个函数就是一个简单的分段函数:几个节点如下表:

在这里插入图片描述

先放代码

package _2_08_工资计算;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt(); //输入之后的工资
		double S = 0;  //之前的工资
		if(T <= 3500)
            S = T;
        else if(T <=4955){
            S = (T-105)/0.97;
        }else if(T <=7655){
            S = (T-455)/0.9;
        }else if(T <=11255){
            S = (T-1255)/0.8;
        }else if(T <=30755){
            S = (T-1880)/0.75;
        }else if(T <=44755){
            S = (T-3805)/0.7;
        }else if(T <=61005){
            S = (T-6730)/0.65;
        }else{
            S = (T-15080)/0.55;
        }
		System.out.println((int)Math.floor(S+0.5));
	}
}

像代码里的 105 455…我刚开始很迷或不知道怎么计算出来的。然后就举了个栗子进行计算。 结果其实就是一个简单的数学问题,然后把 计算式子化简所得。
例如 : T = S -(S-3500)*0.97 化简,反解S即可。


第二个问题 ——Java的精度问题

这个我受那个博主的启发,但又不同于他,我选择了用 +0.5向下取整的方法解决。


Java除法的解决方案 两种方法

标签:小明,Java,3500,工资,超过,1500,4500,CSP
来源: https://blog.csdn.net/alovelypeach/article/details/104728998

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有