回复 楼主 杜杜
#include<bits/stdc++.h>
int a[10005],b[10005],c[10005],d[10005],l,la,lb;
//先进行c=a+b,然后d=c*c
int main(){
char a1[2005],b1[2005];
scanf("%s%s",a1,b1);
la=strlen(a1); lb=strlen(b1);
for(int i=la-1;i>=0;i--) a[la-i]=a1[i]-'0';
for(int i=lb-1;i>=0;i--) b[lb-i]=b1[i]-'0';
l=la>lb?la:lb;
for(int i=1;i<=l;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}//高精加
for(int i=1;i<=l;i++)
for(int j=1;j<=l;j++)
d[i+j-1]+=c[i]*c[j];
l*=l;
for(int i=1;i<=l;i++){
d[i+1]+=d[i]/10;
d[i]%=10;
}
while(!d[l]) l--;//高精乘
for(int i=l>1?l:1;i>0;i--) printf("%d",d[i]);
return 0;
}