RT,卡了一天了
#include<bits/stdc++.h>
using namespace std;
struct node
{
int number[100];
int len;
}dp[105][105],d[105],w[105],di;
int n;
string s;
void init(int);
void print(node);
void clean(node);
node operator + (node a,node b)
{
node c;
clean(c);
for(int i=1;i<=max(a.len,b.len);i++)
{
c.number[i]+=a.number[i]+b.number[i];
if(c.number[i]>=10)
{
c.number[i]%=10;
c.number[i+1]++;
}
}
if(c.number[max(a.len,b.len)+1])
c.len=max(a.len,b.len)+1;
else
c.len=max(a.len,b.len);
return c;
}
node operator * (node a,node b)
{
node c;
clean(c);
for(int i=1;i<=a.len;i++)
{
for(int j=1;j<=b.len;j++)
{
c.number[i+j-1]+=a.number[i]*b.number[j];
c.number[i+j]+=c.number[i+j-1]/10;
c.number[i+j-1]%=10;
}
}
c.len=a.len+b.len;
while(c.len>1&&c.number[c.len]==0)
c.len--;
return c;
}
int main()
{
di.len=1;
di.number[1]=2;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s;
init(i);
print(d[i]);
}
node dd=d[1]+d[2];
print(dd);
}
void init(int k)
{
clean(d[k]);
int leng=s.length();
d[k].len=leng;
for(int i=0;i<leng;i++)
{
d[k].number[i+1]=s[leng-i-1]-'0';
// cout<<d[k].number[i+1]<<endl;
}
}
void print(node a)
{
for(int i=a.len;i>=1;i--)
cout<<a.number[i];
cout<<endl;
}
void clean(node a)
{
memset(a.number,0,sizeof(a.number));
a.len=0;
}