比赛 |
20111102 |
评测结果 |
AWWWE |
题目名称 |
个人所得税 |
最终得分 |
20 |
用户昵称 |
lizhe |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-02 21:54:52 |
显示代码纯文本
- program personaltax;
- var
- i,j,m,t,mon,num,ney:longint;
- s,p:string;
- money:real;
- month:array[1..50000,1..12]of real;
- k:integer;
- sum:real;
- procedure init;
- begin
- assign(input,'personaltax.in');
- reset(input);
- assign(output,'personaltax.out');
- rewrite(output);
- readln(m)
- end;
-
- procedure block;
- begin
- while s[1]=' ' do
- delete(s,1,1)
- end;
-
- procedure pay;
- begin
- delete(s,1,3);
- block;
- t:=pos(' ',s);
- p:=copy(s,1,t-1);
- delete(s,1,t);
- block;
- val(p,num,k);
- t:=pos('/',s);
- p:=copy(s,1,t-1);
- val(p,mon,k);
- t:=pos(' ',s);
- delete(s,1,t);
- val(s,ney,k);
- money:=ney;
- month[num,mon]:=month[num,mon]+money
- end;
-
- procedure income;
- begin
- delete(s,1,6);
- block;
- t:=pos(' ',s);
- repeat
- delete(s,1,t);
- t:=pos(' ',s)
- until t=0;
- val(s,ney,k);
- money:=ney;
- if (money>800) and (money<=4000) then sum:=sum+(money-800)*0.2;
- if money>4000 then
- begin
- sum:=sum+640;
- money:=(money-4000)*0.8;
- if money<=20000 then sum:=sum+money*0.2;
- if (money>20000) and (money<=50000) then sum:=sum+4000+(sum-20000)*0.3;
- if money>50000 then sum:=sum+13000+(sum-50000)*0.4
- end
- end;
-
- procedure main;
- begin
- readln(s);
- repeat
- block;
- while s[length(s)]=' ' do delete(s,length(s),1);
- if s[1]='P' then pay;
- if s[1]='I' then income;
- readln(s)
- until s='#';
- for i:=1 to m do
- for j:=1 to 12 do
- begin
- money:=month[i,j];
- if money>800 then
- begin
- money:=money-800;
- if money<=500 then sum:=sum+money*0.05;
- if (money>500) and (money<=2000) then sum:=sum+25+(money-500)*0.1;
- if (money>2000) and (money<=5000) then sum:=sum+175+(money-2000)*0.15;
- if (money>5000) and (money<=20000) then sum:=sum+625+(money-5000)*0.2;
- if (money>20000) and (money<=40000) then sum:=sum+3625+(money-20000)*0.25;
- if (money>40000) and (money<=60000) then sum:=sum+8625+(money-40000)*0.3;
- if (money>60000) and (money<=80000) then sum:=sum+14625+(money-60000)*0.35;
- if (money>80000) and (money<=100000) then sum:=sum+21625+(money-80000)*0.4;
- if money>100000 then sum:=sum+29625+(money-100000)*0.45
- end
- end
- end;
-
- procedure print;
- begin
- writeln(sum:0:2);
- close(input);
- close(output)
- end;
-
- begin
- init;
- main;
- print
- end.