PIPI交税

题目描述

PIPI要去大城市参加工作了!在工作之前,PIPI想了解一下税收政策,现已知税收政策如下:

  1. 起征点为3500元,未超过3500元的部分无需交税,记总工资为 M , 超过3500的部分为 A = M - 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%。
    现在已知PIPI税后工资,求PIPI税前工资。

输入

输入包含多组测试样例。
每组测试样例包含一个正整数N,代表PIPI的税后工资(N<=200000)。

输出

对于每组测试样例,输出一行,代表PIPI的税前工资(保证为整数)。

样例输入

10855

样例输出

12000

#include<bits/stdc++.h>
using namespace std;
int get(int x) { ///计算金额为x时应缴税多少
    x=x-3500;
    int u=0;
    if(x<=0) return 0;
    if(x>80000) {
        u=(int)(x-80000)*0.45;
        x=80000;
    }
    if(x>55000&&x<=80000) {
        u+=(int)(x-55000)*0.35;
        x=55000;
    }
    if(x>35000&&x<=55000) {
        u+=(int)(x-35000)*0.30;
        x=35000;
    }
    if(x>9000&&x<=35000) {
        u+=(int)(x-9000)*0.25;
        x=9000;
    }
    if(x>4500&&x<=9000) {
        u+=(int)(x-4500)*0.20;
        x=4500;
    }
    if(x>1500&&x<=4500) {
        u+=(int)(x-1500)*0.1;
        x=1500;
    }
    if(x<=1500) {
        u+=(int)x*0.03;
    }
    return u;
}
int main() {
    int x,n;
    while(scanf("%d",&n)!=EOF){
        int l=n,r=300000;
    if(n<=3500){
        printf("%d\n",n);
        continue;
    }
    while(l<r){ ///二分法求得税前的金额
        int mid=l+r>>1;
        if(mid>=get(mid)+n){
            r=mid;
        }else{
            l=mid+1;
        } 
    }
    printf("%d\n",l+1);
    }
}
发布了78 篇原创文章 · 获赞 7 · 访问量 4548

猜你喜欢

转载自blog.csdn.net/weixin_44433678/article/details/105184642
今日推荐