#题目内容 给定a和b,求(a+b)(a−b)
a,b≤10500
这里我用了平方差公式(a+b)(a−b)=a2−b2
#include<bits/stdc++.h>
using namespace std;
string x,y;
int a[501],b[501],a2[1002],b2[1002],ans[1002];
int main(){
//freopen("square.in","r",stdin);
//freopen("square.out","w",stdout);
cin>>x>>y;
for(int i=0;i<x.size();i++)a[i+1]=x[x.size()-i-1]-'0';
for(int i=0;i<y.size();i++)b[i+1]=y[y.size()-i-1]-'0';
a[0]=x.size();
b[0]=y.size();
for(int i=1;i<=a[0];i++){
for(int j=1;j<=a[0];j++){
a2[i+j-1]+=a[i]*a[j];
}
}
for(int i=1;i<=a[0]*2;i++){
a2[i+1]+=a2[i]/10;
a2[i]%=10;
}
if(a2[a[0]*2])a2[0]=a[0]*2;
else a2[0]=a[0]*2-1;
for(int i=1;i<=b[0];i++){
for(int j=1;j<=b[0];j++){
b2[i+j-1]+=b[i]*b[j];
}
}
for(int i=1;i<=b[0]*2;i++){
b2[i+1]+=b2[i]/10;
b2[i]%=10;
}
if(b2[b[0]*2])b2[0]=b[0]*2;
else b2[0]=b[0]*2-1;
for(int i=1;i<=a2[0];i++){
if(a2[i]<b2[i]){
a2[i]+=10;
a2[i+1]--;
}
ans[i]=a2[i]-b2[i];
}
if(ans[a2[0]])ans[0]=a2[0];
else ans[0]-a2[0]-1;
if(ans[0]==0){
printf("0");
return 0;
}
for(int i=ans[0];i>=1;i--)printf("%d",ans[i]);
return 0;
}