参考链接: http://moilk.org/blog/2016/12/27/ccf2016122/
问题描述
试题编号: | 201612-2 |
试题名称: | 工资计算 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 输入格式 输入的第一行包含一个整数T,表示小明的税后所得。所有评测数据保证小明的税前工资为一个整百的数。 输出格式 输出一个整数S,表示小明的税前工资。 样例输入 9255 样例输出
扫描二维码关注公众号,回复:
3246368 查看本文章
10000 评测用例规模与约定 对于所有评测用例,1 ≤ T ≤ 100000。 |
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int T = cin.nextInt(); //输入税后工资
int[] s = {3500,5000,8000,12500,38500,58500,83500,100000}; //税前
int[] t = {3500,4955,7655,11255,30755,44755,61005,72005}; //税后
double[] f = {1, 0.97, 0.9, 0.8, 0.75, 0.7, 0.65, 0.55}; //税率
//判断属于哪个范围
int i=0;
for(; i<t.length; i++) {
if(T <= t[i]) {
break;
}
}
//计算税前工资
int S=0; //税前工资
//排除工资为0与工资小于350的情况0
if(T != 0 && i != 0)
S = (int) (s[i-1]+(T-t[i-1])/f[i]);
//工资小于3500
if(i == 0) {
S = T;
}
System.out.print(S);
}
}