UVA 11375 - Matches

写得泪奔了。

我已开始MAXN写到了2048,数组也是开到2048,结果WA不断。

还以为是高精度写错了。

然后重写了三四遍,尼玛还是WA。

还有今天UVA连接好慢,我都成F5党了。交上去的代码一片CP(连接失败。。代码交不全)

后来把MAXN改为2000 数组2048直接AC了。

测试数据不是说1~2000么。。。。。。

多开一点。。。。。没事吧。。。。。。。。

啥也不说了,都是泪。T T


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=2000;
const int SIZE=MAXN+48;
class bign
{
public:
	int data[500];
	int len;
	bign(){ memset(data,0,sizeof(data)); len=1; }

	void operator = (const int &x)
	{
		int temp=x;
		while(temp!=0)
		{
			data[len++]=temp % 10;
			temp/=10;
		}
	}

	bign operator +(const bign &a)
	{
		bign temp;
		temp.len=max(len,a.len);
		for(int i=1;i<=temp.len;i++)
		{
			temp.data[i]+=data[i]+a.data[i];
			if(temp.data[i]>=10)
			{
				temp.data[i+1]=temp.data[i+1]+temp.data[i]/10;
				temp.data[i]%=10;
				if(i==temp.len) temp.len++;
			}
		}
		return temp;
	}

	bign operator +=(const bign &a)
	{
		*this=*this+a;
		return *this;
	}

	bign operator +(const int  &a)
	{
		bign temp;
		temp=a;
		temp= *this + temp;
		return temp;
	}
	friend ostream & operator << (ostream &print ,const bign &ans)
	{
		int i=ans.len;
		while(ans.data[i]==0&&i>=1)
					i--;
		if(i!=0)
		for(;i>0;i--)		
			print<<ans.data[i];
		else print<<"0";
		return print;
	}
};

bign ans[SIZE],d[SIZE];
const int need[]={6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
int main()
{
	d[0]=1;
	for(int i=0;i<=MAXN;i++)
		for(int j=0;j<10;j++)
			if(!(i==0&&j==0) && need[j] + i<=MAXN)
				 d[ need[j] + i] += d[i];
	ans[0]=0;			
	
	for(int i=1;i<=MAXN;i++)
		ans[i] = ans[i-1]+d[i];

	  for(int i = 6; i <= MAXN; i++)
			 ans[i] =ans[i]+ 1; 
	int n;
	while(cin>>n)
	{
		cout<<ans[n]<<endl;
	}
	
	return 0;
	
}


posted @ 2013-07-31 23:55  hr_whisper  阅读(288)  评论(0编辑  收藏  举报