点击前往试题目录:https://blog.csdn.net/best335/article/details/99550556
这道题可以顺推和逆推,我是用的是顺推,逆推很麻烦,思想是二分搜索出一个S满足税后为T。
#include<iostream>
using namespace std;
int J(const int& S){
int A=S-3500,R=0;
if(A>0) R+=min(A,1500)*3/100;
if(A>1500) R+=min(A-1500,3000)/10;
if(A>4500) R+=min(A-4500,4500)/5;
if(A>9000) R+=min(A-9000,26000)/4;
if(A>35000) R+=min(A-35000,20000)*3/10;
if(A>55000) R+=min(A-55000,25000)*7/20;
if(A>80000) R+=(A-80000)*9/20;
return S-R;
}
int main(){
int T,S;
cin>>T;
int l=0,r=150000;
while(l<=r){
int mid=(l+r)/2;
mid/=100,mid*=100,S=J(mid);
if(T==S){
cout<<mid<<endl;
break;
}
else if(T>S)l=mid+100;
else if(T<S)r=mid-100;
}
return 0;
}