比赛 |
20111102 |
评测结果 |
AAAAA |
题目名称 |
个人所得税 |
最终得分 |
100 |
用户昵称 |
kaaala |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-02 19:18:44 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int sd[10]={0,500,2000,5000,20000,40000,60000,80000,100000,1000000000},sl[]={0,5,10,15,20,25,30,35,40,45};
int m;
double ans,z[50001][13];
double INCOME(double x)
{
if(x<=4000)
x-=800;
else
x*=0.8;
if(x<0)
return 0;
if(x<=20000)
return x*0.2;
if(x<=50000)
return (x-20000)*0.3+4000;
return (x-50000)*0.4+13000;
}
double PAY(int x)
{
x-=800;
if(x<=0)
return 0;
double re=0;
for(int i=1;i<=9;++i)
{
if(x<=sd[i])
return (re+(x-sd[i-1])*sl[i])/100;
re+=sl[i]*(sd[i]-sd[i-1]);
}
}
int main()
{
freopen("personaltax.in","r",stdin);
freopen("personaltax.out","w",stdout);
scanf("%d",&m);
for(;;)
{
char s[10];
scanf("%s",s);
if(s[0]=='#')
break;
int a,b,d,e;
char c;
scanf("%d%d%c%d%d",&a,&b,&c,&d,&e);
if(s[0]=='I')
z[a][0]+=INCOME(e);
else
z[a][b]+=e;
}
for(int i=1;i<=m;++i)
{
ans+=z[i][0];
for(int j=1;j<=12;++j)
ans+=PAY(z[i][j]);
}
printf("%.2lf\n",ans);
return 0;
}