题目描述
下表是我国现行的个人所得税计算表格,当实际工资超过3500元之后,超过的部分按照下表缴纳工资:
- 所得税部分 税率
- 工资超过0元至1500元 3%
- 工资超过1500元至4500元 10%
- 工资超过4500元至9000元 20%
- 工资超过9000元至35000元 25%
- 工资超过35000元至55000元 30%
- 工资超过55000元至80000元 35%
- 工资超过80000元 45%
现在我们知道小hi这个月缴纳的个人所得税为M元。请你计算出小明这个月的实际工资是多少?
解题思路
本题给定的工资x
与个人所得税y
的关系满足y = f(x)
。
f(x)
是一个分段函数,但是不难看出f(x)
是一个严格递增的函数,因此可以通过y
反解出唯一的x
。
我们首先求出每一个分段最大的累计个人所得税:
x - y
3500 - 0
5000 - 45
8000 - 345(45 + 3000 * 10%)
12500 - 1245(345 + 4500 * 20%)
38500 - 7745(1245 + 26000 * 25%)
58500 - 13745(7745 + 20000 * 30%)
83500 - 22495(7745 + 25000 * 35%)
由此我们可以根据y
的值,来确定x
落在那个区间。比如当y = 50
时,45 < y ≤ 345
,所以x
一定在[5000,8000]
的区间。
对于5000
以内的部分,缴纳了45
的税款,那么剩余的5
税款也就对应了工资超过1500元至4500元的部分,因此税率为10%
,得到这一部分的实际工资为5 / 10% = 50
。因此x = 5000 + 50 = 5050
。
再举一个例子,y=6745
:
根据y=6745
,可以得到x
在[12500,38500]
之间,因此有:x = 12500 + (y - 1245) / 25% = 34500
。
根据这两个例子,我们可以得到原f(x)
函数的反函数f'(y)
:
f'(y) =
3500 + y / 0.03 (y ≤ 45)
5000 + (y - 45) / 0.1 (45 < y ≤ 345)
8000 + (y - 345) / 0.2 (345 < y ≤ 1245)
12500 + (y - 1245) / 0.25 (1245 < y ≤ 7745)
38500 + (y - 7745) / 0.3 (7745 < y ≤ 13745)
58500 + (y - 13745) / 0.35 (13745 < y ≤ 22495)
83500 + (y - 22495) / 0.45 (22495 < y)
得到f'(y)
之后,我们只需要让程序实现该函数就可以顺利解决这道题目。
题目总结
比较基础的题目,注意下取整的精度问题即可。