查看原题目请点我这里
解题思路:这道题应该算是大数加法,只是换了种说法而已,主要注意两个细节,字符串需要先反转后再从个位开算,另外两个字符不一定相同长度,需要补充成一样长。
#include<cstdio>
#include<cstring>
int cnt;
void add(char s[],char t[]){
int c=0;
int len1=strlen(s);
int len2=strlen(t);
int len=len1>len2?len1:len2;
for(int i=0;i<len;i++){
int A=i<len1?s[i]-'0':0;
int B=i<len2?t[i]-'0':0;
c=(A+B+c)/10;
if(c==1) cnt++;
}
}
void reverse(char s[]){
int len=strlen(s);
for(int i=0;i<len/2;i++){
int tmp=s[i];
s[i]=s[len-1-i];
s[len-1-i]=tmp;
}
}
int main(){
char str1[15],str2[15];
while(scanf("%s%s",str1,str2)!=EOF){
if(str1[0]=='0'&&str2[0]=='0') break;
cnt=0;
reverse(str1);
reverse(str2);
add(str1,str2);
if(cnt==0)
printf("No carry operation.\n");
else if(cnt==1)
printf("1 carry operation.\n");
else
printf("%d carry operations.\n",cnt);
}
return 0;
}