struct data {
int num[114514],len;
data() {len=0;memset(num,0,sizeof(num));}
data operator +(data a) {
a.len=max(a.len,len);
for(int i=1;i<=a.len;++i) {
a.num[i]=a.num[i]+num[i]+a.num[i-1]/10;
a.num[i-1]%=10;
}
while(a.num[a.len]>=10) {
a.num[a.len+1]=a.num[a.len]/10;
a.num[a.len]%=10; ++a.len;
}
return a;
}
data operator *(data a) {
data c;
c=a;
// for(int i=1;i<=a.len;++i) a.num[i]=0;
// a.len=c.len+len-1;
// for(int i=c.len;i>=1;--i)
// for(int j=len;j>=1;--j) {
// a.num[i+j-1]=(a.num[i+j-1]+c.num[i]*num[j]);
// }
// for(int i=1;i<=a.len;++i) {
// a.num[i]=(a.num[i]+a.num[i-1]/10);
// a.num[i-1]%=10;
// }
// while(a.num[a.len]>=10) {
// a.num[a.len+1]=a.num[a.len]/10;
// a.num[a.len]%=10; ++a.len;
// }
return a;
}
void print(data a) {
for(int i=a.len;i>=1;--i) printf("%d",a.num[i]);
}
void cle(data &a) {
for(int i=1;i<=a.len;++i) a.num[i]=0;
a.len=0;
}
};
不知道为什么重载乘法运算符里面定义一个c就爆炸