记录编号 80105 评测结果 AAAAA
题目名称 [NOI 1998]个人所得税 最终得分 100
用户昵称 Gravatar1azyReaper 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2013-11-06 19:22:31 内存使用 5.27 MiB
显示代码纯文本
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
ifstream fin("personaltax.in");
ofstream fout("personaltax.out");
double f[50001][13];
int n;
double ans=0;
double js1(double a)
{
	if(a<=0) 
		return 0;
	double counter=0;
	double temp=a;
	if(a<=500)
		return a*0.05;
	else
		counter+=500*0.05;
	if(a<=2000)
		return counter+(a-500)*0.1;
	else
		counter+=1500*0.1;
	if(a<=5000)
		return counter+=(a-2000)*0.15;
	else
		counter+=3000*0.15;
	if(a<=20000)
		return counter+=(a-5000)*0.2;
	else
		counter+=15000*0.2;
	if(a<=40000)
		return counter+=(a-20000)*0.25;
	else
		counter+=20000*0.25;
	if(a<=60000)
		return counter+=(a-40000)*0.3;
	else
		counter+=20000*0.3;
	if(a<=80000)
		return counter+=(a-60000)*0.35;
	else
		counter+=20000*0.35;
	if(a<=100000)
		return counter+=(a-80000)*0.4;
	else
		counter+=20000*0.4;
	if(a>100000)
		return counter+=(a-100000)*0.45;
}
double js2(double a)
{
	if(a<=0) 
		return 0;
	double counter=0;
	if(a<=20000)
		return a*0.2;
	else
		counter+=20000*0.2;
	if(a<=50000)
		return counter+=(a-20000)*0.3;
	else
		counter+=30000*0.3;
	if(a>50000)
		return counter+=(a-50000)*0.4;
}
int pow(int x,int y)
{
	int temp=1;
	int i;
	for(i=1;i<=y;i++)
		temp=temp*x;
	return temp;
}
int zh(string A)
{
	int LA=A.length();
	int i;
	int K;
	int temp=0;
	for(i=LA-1;i>=0;i--)
	{
		K=pow(10,LA-i-1);
		temp+=(int(A[i])-48)*K;
	}
	return temp;
}
int main()
{
	fin>>n;
	int temp;
	int mouth;
	string New="";
	double tot;
	string a,b,c,d;
	int i,j;
	while(!fin.eof())
	{
		fin>>a>>b>>c>>d;
		if(a[0]=='#')
			break;
		if(a[0]=='P')
		{
			temp=zh(b);
			New+=c[0];
			if(c[1]!='/')
				New+=c[1];
			mouth=zh(New);
			New="";
			tot=zh(d);
			f[temp][mouth]+=tot;
		}
		else
		{
			tot=zh(d);
			if(tot<=4000)
			tot=js2(tot-800);
			else
				tot=js2(tot*0.8);
			ans+=tot;
		}
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=12;j++)
		{
			ans+=js1(f[i][j]-800);
		}
	fout<<setiosflags(ios::fixed)<<setprecision(2)<<ans<<endl;
	fin.close();
	fout.close();
	return 0;
}