比赛 |
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;
}