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; }
新 blog : www.hrwhisper.me