要点:所有工资都是整数,在用除法的时候,分子、分母都要先化为整数,以免浮点数在计算的时候产生误差。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
int S=0;
if(T<=3500){
S=T;
}
else if(T<=3500+1500-1500*0.03){//T<=4955
S=(T-0.03*3500)*100/(100-3);
}
else if(T<=3500+4500-1500*0.03-3000*0.1){//T<=7655
S=(T+1500*0.03-(3500+1500)*0.1)*100/(100-10);
}
else if(T<=3500+9000-1500*0.03-3000*0.1-4500*0.20){//11255
S=(T+1500*0.03+3000*0.1-(3500+4500)*0.20)*100/(100-20);
}
else if(T<=3500+35000-1500*0.03-3000*0.1-4500*0.2-26000*0.25){//30755
S=(T+1500*0.03+3000*0.1+4500*0.2-(3500+9000)*0.25)*100/(100-25);
}
else if(T<=3500+55000-1500*0.03-3000*0.1-4500*0.2-26000*0.25-20000*0.3){//44755
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25-(3500+35000)*0.3)*100/(100-30);
}
else if(T<=3500+80000-1500*0.03-3000*0.1-4500*0.2-26000*0.25-20000*0.3-25000*0.35){//61005
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3-(3500+55000)*0.35)*100/(100-35);
}else{
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+25000*0.35-(3500+80000)*0.45)*100/(100-45);
}
cout<<S<<'\n';
return 0;
}
错误范例:80分
在每一次计算S的时候,分母采用的是浮点数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
int S=0;
if(T<=3500){
S=T;
}
else if(T<=3500+1500-1500*0.03){//T<=4955
S=(T-0.03*3500)/(1-0.03);
}
else if(T<=3500+4500-1500*0.03-3000*0.1){//T<=7655
S=(T+1500*0.03-(3500+1500)*0.1)/(1-0.1);
}
else if(T<=3500+9000-1500*0.03-3000*0.1-4500*0.20){//11255
S=(T+1500*0.03+3000*0.1-(3500+4500)*0.20)/(1-0.20);
}
else if(T<=3500+35000-1500*0.03-3000*0.1-4500*0.2-26000*0.25){//30755
S=(T+1500*0.03+3000*0.1+4500*0.2-(3500+9000)*0.25)/(1-0.25);
}
else if(T<=3500+55000-1500*0.03-3000*0.1-4500*0.2-26000*0.25-20000*0.3){//44755
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25-(3500+35000)*0.3)/(1-0.3);
}
else if(T<=3500+80000-1500*0.03-3000*0.1-4500*0.2-26000*0.25-20000*0.3-25000*0.35){//61005
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3-(3500+55000)*0.35)/(1-0.35);
}else{
S=(T+1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+25000*0.35-(3500+80000)*0.45)/(1-0.45);
}
cout<<S<<'\n';
return 0;
}