15分的注意了
可能是没有对最后一位进位进行考虑。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<ctype.h>
#include<stack>
#include<math.h>
#include <string>
#include<algorithm>
using namespace std;
typedef unsigned long long ULL;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
string a,b,c;
int p[22],q[22],r[22],d[22];
memset(p,0,sizeof(p));
memset(q,0,sizeof(q));
memset(r,0,sizeof(r));
memset(d,0,sizeof(d));
cin>>a>>b>>c;
int la,lb,lc;
la=a.size();
lb=b.size();
lc=c.size();
for(int i=0;i<la;i++)
p[i]=a[la-1-i]-'0';
for(int i=0;i<lb;i++)
q[i]=b[lb-1-i]-'0';
for(int i=0;i<lc;i++)
r[i]=c[lc-1-i]-'0';
int sum;
int t=0;
for(int i=0;i<=la;i++) //注意这里必须取等号,因为最后一位数字也可能产生进位
{
sum=q[i]+r[i]+t;
if(p[i]==0)
p[i]=10;
d[i]=sum%p[i];
t=sum/p[i];
// cout<<d[i]<<" ";
}
int i;
for(i=la;i>=0;i--)
if(d[i]!=0)
break;
else
continue;
if(i<0)
cout<<"0";
else
{
for(int j=i;j>=0;j--)
cout<<d[j];
}
return 0;
}