CCF——工资计算(2016-12)


问题描述

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

说明:我这里用的是很暴力的解法,因为输入的是税后工资,税后工资=税前工资-缴税,所以我不断枚举税前工资,利用枚举税前工资来计算税后工资,缴税的计算方法题目已经给出;又因为税前工资肯定大于或者等于税后工资,所以枚举的初值S为输入的税后工资。如果计算的税后工资和输入的税后工资相等,则结果就是这个税前工资了。注意所有评测数据保证小明的税前工资为一个整百的数。

import java.util.Scanner;

public class 工资计算 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double T = sc.nextDouble();

        double a1 = 1500 * 0.03;
        double a2 = a1 + (4500 - 1500) * 0.1;
        double a3 = a2 + (9000 - 4500) * 0.2;
        double a4 = a3 + (35000 - 9000) * 0.25;
        double a5 = a4 + (55000 - 35000) * 0.3;
        double a6 = a5 + (80000 - 55000) * 0.35;

        double rate = 0;
        for (int S = (int) T; S < 1000000; S++) { // 枚举出所有的税前工资,税后工资=税前工资-税
            if (S <= 3500) {

            } else if (S - 3500 <= 1500) {
                rate = (S - 3500) * 0.03;
            } else if (S - 3500 <= 4500) {
                rate = a1 + (S - 3500 - 1500) * 0.1;
            } else if (S - 3500 <= 9000) {
                rate = a2 + (S - 3500 - 4500) * 0.2;
            } else if (S - 3500 <= 35000) {
                rate = a3 + (S - 3500 - 9000) * 0.25;
            } else if (S - 3500 <= 55000) {
                rate = a4 + (S - 3500 - 35000) * 0.3;
            } else if (S - 3500 <= 80000) {
                rate = a5 + (S - 3500 - 55000) * 0.35;
            } else {
                rate = a6 + (S - 3500 - 80000) * 0.45;
            }
            if (S - rate == T) { // 如果相等,即得到了税前工资
                System.out.println(S);
                break;
            }
        }
        sc.close();
    }
}

原文地址:https://www.cnblogs.com/tangxlblog/p/9998344.html

时间: 2024-08-04 11:10:38

CCF——工资计算(2016-12)的相关文章

[Python]CCF——工资计算(201612-2)

工资计算 一.问题描述 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假设他一个月的税前工资(扣除五险一金后.未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元: 2) A中不超过1500元的部分,税率3%: 3) A中超过1500元未超过4500元的部分,税率10%: 4) A中超过4500元未超过9000元的部分,税率2

CCF 工资计算

题目链接:http://118.190.20.162/view.page?gpid=T51 刚看到题的时候一直想的是逆推,然后拿了个80,自己也知道逆推是有一些数据不对的但也没想到怎么改进. 后来看了大家的思路是顺推--有时候还是要暴力一点-- 1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int T; 5 while(cin>>T){ 6 if(T<=3500){ 7 cout<<T<

【读书笔记】2016.12.10 《构建高性能Web站点》

本文地址 分享提纲: 1. 概述 2. 知识点 3. 待整理点 4. 参考文档 1. 概述 1.1)[该书信息] <构建高性能Web站点>: -- 百度百科 -- 本书目录: 第1章 绪论 1.1 等待的真相 1.2 瓶颈在哪里 1.3 增加带宽 1.4 减少网页中的HTTP请求 1.5 加快服务器脚本计算速度 1.6 使用动态内容缓存 1.7 使用数据缓存 1.8 将动态内容静态化 1.9 更换Web服务器软件 1.10 页面组件分离 1.11 合理部署服务器 1.12 使用负载均衡 1.1

关于2016.12.12——T1的反思:凸包的意义与应用

2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度来判断. 这就是下切线(我自己瞎编的名字): 好像是对的啊: 然后我就保证必AC的希望,用这种写法交了,然后就只得了N=2的暴力分... 自以为是正解,却落得如此下场... 为什么?这样不对吗?借用学长的力量,果然被Hack掉了: 这种情况,圆心排序后,检测的顺序并不是圆上的切点的顺序,自然就会挂. 蓝瘦

mysql练习题-2016.12.16

>>>>>>>>>> 练习时间:2016.12.16 编辑时间:2016-12-20-->22:12:08 题: 涉及:多表查询.exists.count().group by.order by 1.1 关系模式 学生student:   SNO:学号:   SNAME:姓名:   AGE:年龄 :   SEX:性别 课程course:CNO:课程代码,CNAME:课程名称,TEACHER:教师 学生成绩SC:SNO:学号,CNO:课程代码

rhel 7.0 配置centos yum源(2016/12/8),成功!

1.首先查看redhat 7.0系统本身所安装的那些yum 软件包: rpm -qa | grep yum #列出所有已安装的yum包 2.删除这些包: rpm -e *.rpm --nodeps #删除所有以前的yum包 3.下载新的yum rpm包:(2016/12/8 最新版本rpm,如果404 NOT FOUND错误,自己进去网址,换成最新的rpm包的名字) wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-3.4.3

第一小组作业 2016.12.8

Sprint计划会议 会议时间:2016/12/8  14:00 会议地点:操场 会议进程: l 首先我们讨论排球计分程序功能最后的制定. l 然后我们讨论实现基本功能的各项工作. l 之后我们讨论各项工作的分工和认领. l 最后每个人对自己的任务进行必要的估算. 团队的Backlog 初期目标:完成程序前期的一切准备,并编写出核心代码的基本雏形. 任务 认领人 估计完成时间 代码编写 胡腾启 20h(>=2h/天) 代码复审 李永威 15h(>=2h/天) 发表博客,组织会议 宋彤彤 15h

Oracle中把一个DateTime的字符串转化成date类型。to_date(&#39;2016/12/8 18:55:43&#39;,&#39;yyyy/MM/dd hh24:mi:ss&#39;),

Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss')  from dual; 是用" /"还是" -"取决于字符串是什么结构的. date类型转换成char类型, 例子to_char(' ','yyyymmd

数学之路-python计算实战(12)-机器视觉-图像增强

分段线性变换将图像的值域分成多个值域并进行不同线性变换计算,可以压缩某部分灰度区,扩展另一部分灰度区间,下面以2个区间为例: for m in xrange(h): for n in xrange(w): if img[m,n]>Ds_min and img[m,n]<=Ds_internal: newimg[m,n]=int((Dd_internal-Dd_min)/(Ds_internal-Ds_min)*(img[m,n]-Ds_min)+Dd_min) else: newimg[m,n