1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
3
-1
-1
100
我的代碼:
#include<iostream>
using namespace std;
int main(void)
{
void accumulate(void);
char num1[10000],num2[10000];
int k,sum[10001];
unsigned int index,sumindex;
while(cin>>num1>>num2,num1!='\0'&&num2!='\0')
{
index=0;sumindex=0;
memset(sum,0,sizeof(sum));
cin>>k;
for(index=strlen(num1)-1,sumindex=strlen(num2)-1;index>=strlen(num1)-k,sumindex>=strlen(num2)-k;index--,sumindex--)
{
if(num1[index]==num2[sumindex])
{
continue;
if(index=strlen(num1)-k)
cout<<"-1"<<endl;
}
else goto loop;
}
loop:void accumulate(void);
}
}
void accumulate(void)
{
char num1[10000],num2[10000];
int k,sum[10001];
unsigned int index,sumindex;
for(index=strlen(num1)-1,sumindex=10000;index>=0;index--,sumindex--)
sum[sumindex]=num1[index]-'\0';
for(index=strlen(num2)-1,sumindex=10000;index>=0;index--,sumindex--)
sum[sumindex]+=num2[index]-'\0';
for(sumindex=10000;sumindex>=0;sumindex--)
{
if(sum[sumindex]>9)
{
sum[sumindex]%=10;
sum[sumindex-1]+=sum[sumindex]/10;
}
}
for(sumindex=0;sumindex<=10000;sumindex++)
{
if(sum[sumindex!=0])break;
}
if(sumindex==10001)
sumindex=10000;
sumindex=0;
while(!sum[sumindex])sumindex++;
for(;sumindex<10000;sumindex++)
cout<<sum[sumindex];
cout<<sum[10001]<<endl;
}
糾結的要命,高手指點。我的郵箱是[email protected]