CCF/CSP_201612-2_工资计算

问题描述

在这里插入图片描述

思路

更像是一道数学题

税率税费(每阶段最高)税前(每阶段最高)税后(每阶段最高)
035003500
(0,1500] — 3%4550004955
(1500, 4500]—10%34580007655
(4500,9000]—20%12451250011255
(9000,35000]—25%77453850030755
(35000,55000]—30%137455850044755
(55000,80000]—35%224958350061005
(80000,100000]—45%2992010000070080

以第三行为例:
阶段最高税费为 = 1500×3% + (4500-1500)×10% = 345
阶段税前最高 = 4500 + 3500 = 8000
阶段税后最高 = 8000 - 345 = 7655

样例输入:9255

此时7655 < 9255 < 11255
设税前工资为x,则x - 345 - (x - 8000)×20% = 9225
解得x = 10000

样例输出:10000

完整代码

#include<iostream>
using namespace std;

int main(){
    int before;
    int after;
    cin >> after;

    int before_max[8] = {3500, 5000, 8000, 12500, 38500, 58500, 83500, 100000};
    int after_max[8] = {3500, 4955, 7655, 11255, 30755, 44755, 61005, 70080};
    int tax_max[8] = {0,  45, 345, 1245, 7745, 13745, 22495, 29920};
    float tax_rate[8] = {0, 0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45};

    for( int i = 0; i < 8; i++)
    {
        if( after <= 3500 )
        {
            cout << after << endl;
            break;
        }
        if( after >= after_max[i] && after <= after_max[i+1] )
        {
            for( before = before_max[i]; ; before += 100)
            {
                if( before - tax_max[i] - (before - before_max[i]) * tax_rate[i+1] == after)
                {
                    cout << before << endl;
                    return 0;
                }
            }
        }
    }
    return 0;
}

提交记录

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值