第五个点不知为何错了(其他点都对),有dl帮忙看一下我哪里出错了吗
#include<bits/stdc++.h>
using namespace std;
string A,B;
int a[15],b[15],suma[11][15],sumb[11][15],ans[11][15];//ans[i][j]表示数字i出现的次数的第j位
int main()
{
cin>>A>>B;
int lena=A.size(),lenb=B.size();
for(int i=1;i<=lena;i++)
a[i]=A[lena-i]-'0';
for(int i=1;i<=lenb;i++)
b[i]=B[lenb-i]-'0';
for(int i=1;i<=lena;i++) ans[a[i]][1]++;//计算a包含的数字
int flag=1;
for(int i=1;i<=lenb;i++)
if(a[i]!=b[i]) flag=0;
if(flag==1) goto flag1;
for(int i=0;i<=9;i++)//对于每一个数字
for(int j=1;j<lena;j++)
{
suma[i][j]+=j*a[j+1];
suma[i][j+1]+=suma[i][j]/10;
suma[i][j]%=10;//进位
}//每一位由于周期而算出的次数
for(int i=1;i<=lena;i++)//对于每一位算出特殊值
{
if(a[i]==0)//如果该位为0,则要减之前周期多算的0
{
suma[0][i]-=1;
int j=i;
while(suma[0][j]<0)//借位
{
suma[0][j+1]-=1;
suma[0][j]+=10;
j++;
}
}
for(int j=1;j<a[i];j++)//对于1~a[i]-1 每一个都有10^i次
{
suma[j][i]+=1;
suma[j][i+1]+=suma[j][i]/10;
suma[j][i]%=10;//进位
}
suma[a[i]][1]+=1;
for(int j=1;j<i;j++)//对于a[i] 有1+a[1]+a[2]*10+a[3]*10^2+...+a[i-1]*10^(i-2)次
{
suma[a[i]][j]+=a[j];
suma[a[i]][j+1]+=suma[a[i]][j]/10;
suma[a[i]][j]%=10;//进位
}
}
for(int i=0;i<=9;i++)//对于每一个数字
for(int j=1;j<lenb;j++)
{
sumb[i][j]+=j*b[j+1];
sumb[i][j+1]+=sumb[i][j]/10;
sumb[i][j]%=10;//进位
}//每一位由于周期而算出的次数
for(int i=1;i<=lenb;i++)//对于每一位算出特殊值
{
if(b[i]==0)//如果该位为0,则要减之前周期多算的0
{
sumb[0][i]-=1;
int j=i;
while(sumb[0][j]<0)//借位
{
sumb[0][j+1]-=1;
sumb[0][j]+=10;
j++;
}
}
for(int j=1;j<b[i];j++)//对于1~b[i]-1 每一个都有10^i次
{
sumb[j][i]+=1;
sumb[j][i+1]+=sumb[j][i]/10;
sumb[j][i]%=10;//进位
}
sumb[b[i]][1]+=1;
for(int j=1;j<i;j++)//对于b[i] 有1+b[1]+b[2]*10+b[3]*10^2+...+b[i-1]*10^(i-2)次
{
sumb[b[i]][j]+=b[j];
sumb[b[i]][j+1]+=sumb[b[i]][j]/10;
sumb[b[i]][j]%=10;//进位
}
}
for(int i=0;i<=9;i++)
for(int j=1;j<=14;j++)
if(suma[i][j]>9)
{
suma[i][j+1]+=suma[i][j]/10;
suma[i][j]%=10;
}//把进位过剩的理清
for(int i=0;i<=9;i++)
for(int j=1;j<=14;j++)
if(sumb[i][j]>9)
{
sumb[i][j+1]+=sumb[i][j]/10;
sumb[i][j]%=10;
}//把进位过剩的理清
for(int i=0;i<=9;i++)
{
for(int j=1;j<=14;j++)
{
ans[i][j]+=sumb[i][j]-suma[i][j];
while(ans[i][j]<0)
{
ans[i][j]+=10;
ans[i][j+1]-=1;
}
}
}
flag1:
for(int i=0;i<=9;i++)
{
int j=14;
while(ans[i][j]==0&&j!=1) j--;
for(j;j>=1;j--)
printf("%d",ans[i][j]);
printf(" ");
}
return 0;
}