比赛 EYOI与SBOI开学欢乐赛2nd 评测结果 AAAAA
题目名称 个人所得税 最终得分 100
用户昵称 yrtiop 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-09-02 20:21:43
显示代码纯文本
#include <bits/stdc++.h> /*
级数	月应纳税所得额 			税率(%)
1	不超过500元的			5
2	超过500元~2000元的部分    	10
3	超过2000元~5000元的部分    	15
4	超过5000元~20000元的部分	20
5	超过20000元~40000元的部分	25
6	超过40000元~60000元的部分	30
7	超过60000元~80000元的部分	35
8	超过80000元~100000元的部分	40
9	超过100000元的部分		45
级数	每次应纳税所得额	    税率(%)
1	不超过20000元的部分	    20
2	超过20000元~50000元的部分    30
3	超过50000元的部分	    40*/
double F[] = {0 , 500 , 2000 , 5000 , 20000 , 40000 , 60000 , 80000 , 100000 , 1000000};
double f[] = {0.05 , 0.1 , 0.15 , 0.2 , 0.25 , 0.3 , 0.35 , 0.4 , 0.45};
double G[] = {0 , 20000 , 50000 , 1000000};
double g[] = {0.2 , 0.3 , 0.4};
double tot[50005][20];

int main() {
	freopen("personaltax.in","r",stdin);
	freopen("personaltax.out","w",stdout);
	
	char s[10];
	int m,d,num,a = 0;
	scanf("%d",&a);
	double val,ans = 0;
	while(~ scanf("%s",s + 1)&&s[1] != '#') {
		scanf("%d %d/%d %lf",&num,&m,&d,&val);
		if(s[1] == 'P')tot[num][m] += val;
		else {
			if(val <= 4000)val -= 800;
			else val -= val * 0.2;
			if(val <= 0)continue ;
			for(int i = 0;i < 3;++ i) {
				if(val > G[i + 1]) {
					ans += (G[i + 1] - G[i]) * g[i];
				}
				else {
					ans += (val - G[i]) * g[i];
					break ;
				}
			}
		}
	}
	
	for(int i = 1;i <= a;++ i) {
		for(int k = 1;k <= 12;++ k) {
			tot[i][k] -= 800;
			if(tot[i][k] <= 0)continue ;
			for(int j = 0;j < 9;++ j) {
				if(tot[i][k] > F[j + 1]) {
					ans += (F[j + 1] - F[j]) * f[j];
				}
				else {
					ans += (tot[i][k] - F[j]) * f[j];
					break ;
				}
			}
		}
	}
	
	printf("%.2lf",ans);
	
	return 0;
}