zoukankan      html  css  js  c++  java
  • CCF CSP 201612-2 工资计算

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址

    CCF CSP 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
     

    解析

    题意很简单,关键在于找到一种简洁的计算方式。
    我的做法是将收入划分为不同的等级。
    计算每一个等级的最大可能收入,如果除去更低等级的收入仍然大于这个等级的最大可能收入,则加上这个等级的最多工资;否则根据公式计算这个等级的工资。
     

    代码

    C++
    #include <cstdio>
    
    int main() {
        int base[8] = {0, 1500, 4500, 9000, 35000, 55000, 80000, 10000000};
        int percent[7] = {3, 10, 20, 25, 30, 35, 45};
        
        int get;
        int wage = 0;
        scanf("%d", &get);
        if(get <= 3500) {
            printf("%d
    ", get);
            return 0;
        }
        get -= 3500;
        wage += 3500;
        for(int l=0; l<7; l++) {
            int maxRemain = (base[l+1] - base[l]) * (100 - percent[l]) / 100;
            //printf("%d %d %d
    ", maxRemain, get, wage);
            if(get <= maxRemain) {
                wage += 100 * get / (100 - percent[l]);
                get = 0;
                break;
            }
            else {
                wage += (base[l+1] - base[l]);
                get -= maxRemain;
            }
        }
        printf("%d
    ", wage);
    }
  • 相关阅读:
    SGU 271 Book Pile (双端队列)
    POJ 3110 Jenny's First Exam (贪心)
    HDU 4310 Hero (贪心)
    ZOJ 2132 The Most Frequent Number (贪心)
    POJ 3388 Japanese Puzzle (二分)
    UVaLive 4628 Jack's socks (贪心)
    POJ 2433 Landscaping (贪心)
    CodeForces 946D Timetable (DP)
    Android Studio教程从入门到精通
    Android Tips – 填坑手册
  • 原文地址:https://www.cnblogs.com/meelo/p/7637641.html
Copyright © 2011-2022 走看看