CCF 201612-2 工资查询
主要还是要细心,当涉及到的数据很多时不要弄错了。根据题意逐步讨论。上满分代码:
import java.util.Scanner;
public class Main {
public static final int[] ratio = {0,3,10,20,25,30,35,45};
public static final int[] level = {0,3500,5000,8000,12500,38500,58500,83500,0};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int salary_after = scanner.nextInt();
scanner.close();
int salary_before = 0;
int[] salary_level = new int[8];
salary_level[0] = level[1];
for(int i=1 ; i<ratio.length-1 ; i++) {
salary_level[i] = salary_level[i-1]+(level[i+1]-level[i])*(100-ratio[i])/100;
}
for(int i=0 ; i<salary_level.length ; i++) {
if(salary_after>=salary_level[i] && i<7) {
salary_before = level[i+1];
}else if(salary_after<=level[1]) {
//还未达到纳税标准
salary_before = salary_after;
break;
}else if(salary_after<salary_level[i] && i<7) {
salary_before += (salary_after-salary_level[i-1])*100/(100-ratio[i]);
break;
}else if(salary_after>salary_level[i] && i==7) {
//超过最大税率
salary_before += (salary_after-salary_level[i-1])*100/(100-ratio[i]);
}
}
System.out.print(salary_before);
}
}