当前位置: 代码迷 >> 综合 >> 51nod 2381 个人所得税
  详细解决方案

51nod 2381 个人所得税

热度:51   发布时间:2024-01-30 16:21:05.0

题目描述

牛牛已知每月的税前收入,他想知道在新个税下,税收后收入是多少?
个税计算方法是这样的:

综合所得金额 - 新起征点5000元 = 应纳税所得额

其中 综合所得金额 就是税前收入,(你可以忽略五险一金,专项扣除等我没有提到的东西)

对于 应纳税所得额

  1. 不超过3000元的部分,税率3%
  2. 超过3000元至12000元的部分,税率10%
  3. 超过12000元至25000元的部分,税率20%
  4. 超过25000元至35000元的部分,税率25%
  5. 超过35000元至55000元的部分,税率30%
  6. 超过55000元至80000元的部分,税率35%
  7. 超过80000元的部分,税率45%

税前收入 - 个人所得税 = 税后收入

为了方便计算,保证收入是100的倍数,因此输出一定是整数。

虽然个人所得税法没有写明,但是我相信对于税前收入5000以下的人,是可以不交个人所得税的,当然也不会受到国家的补助。(税不会是负数)

存在7组数据为5000, 8000, 17000, 30000, 40000, 60000, 85000
输入保证 2400 <= 税前收入 <= 240000

输入
输入一行一个整数表示税前收入
输出
输出一行一个整数表示税后收入
输入样例
20000
输出样例
18410

题解

列举出所有可能出现的金额即可

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <deque>
#include <list>
#include <utility>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <iterator>
using namespace std;int main()
{int n;int tax = 0,sum = 0;cin >> n;if(n <= 5000){sum = n;}else if(n-5000<=3000){tax = (n-5000)*0.03;sum = n - tax;}else if(n-5000<=12000){tax = (n-5000-3000)*0.1+3000*0.03;sum=n -tax;}else if(n-5000<=25000){tax = (n-5000-12000)*0.2+9000*0.1+3000*0.03;sum = n-tax ;}else if(n-5000<= 35000){tax = (n-5000-25000)*0.25+13000*0.2+9000*0.1+3000*0.03;sum = n-tax;}else if(n-5000<= 55000){tax = (n-5000-35000)*0.3+10000*0.25+13000*0.2+9000*0.1+3000*0.03;sum = n-tax;}else if(n-5000<=80000){tax = (n-5000-55000)*0.35+20000*0.3+10000*0.25+13000*0.2+9000*0.1+3000*0.03;sum = n-tax;}else if(n-5000> 80000){tax = (n-5000-80000)*0.45+25000*0.35+20000*0.3+10000*0.25+13000*0.2+9000*0.1+3000*0.03;sum = n-tax;}cout << sum;return 0;
}