#include <stdio.h>
#include <string.h>
#define MAXDIGIT 10
int read_from_str(int len,int* big,char* str);
//void print_num(int len,int *big);
int count_carry(int* biga,int* bigb, int len);
int main (void) {
char str_a[MAXDIGIT+1] = {"\0"};
char str_b[MAXDIGIT+1] = {"\0"};
int endornot_a = 0;
int endornot_b = 0;
int a[MAXDIGIT];
int b[MAXDIGIT];
int reslen = 0;
int c = 0;
while (scanf("%s %s",str_a
,str_b
)!=EOF
) {
endornot_a
= read_from_str
(strlen(str_a
),a
,str_a
); endornot_b
= read_from_str
(strlen(str_b
),b
,str_b
);
if ((endornot_a==1)&&(endornot_b==1)){
break;
}
}else{
}
/*
printf("reslen:%d\n",reslen);
print_num(strlen(str_a),a);
print_num(strlen(str_b),b);
*/
c = count_carry(a,b,reslen);
if (c == 0) {
printf("No carry operation.\n"); }else if (c == 1){
printf("1 carry operation.\n"); }else{
printf("%d carry operations.\n",c
); }
}
return 0;
}
int read_from_str(int len,int* big,char* str){
int i = 0;
memset(big
,0,sizeof(int)*MAXDIGIT
);
/*printf("%d\n",len);*/
for (i = len-1; i >= 0 ; --i){
big[len-1-i]=str[i]-48;
/*
printf("str[%d]:%c\n",i,str[i]);
printf("big[%d]:%d\n",len-1-i,big[len-1-i]);
*/
}
if ((len==1)&&(big[0]==0)){
/*printf("num is 0\n");*/
return 1;
}
}
/*
void print_num(int len,int *big){
int i = 0;
for (i = len-1; i >= 0; --i) {
printf("%d",big[i]);
}
printf("\n");
}
*/
int count_carry(int* biga,int* bigb,int len){
int i = 0;
int carry = 0;
int count = 0;
/*printf("%d\n",len);*/
for (i = 0; i < len; i++) {
/*
printf("biga[%d]:%d\n",i,biga[i]);
printf("bigb[%d]:%d\n",i,bigb[i]);
*/
carry = (biga[i] + bigb[i] +carry) / 10;
if (carry > 0){
count++;
}
}
return count;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYRElHSVQgMTAKCmludCByZWFkX2Zyb21fc3RyKGludCBsZW4saW50KiBiaWcsY2hhciogc3RyKTsKLy92b2lkIHByaW50X251bShpbnQgbGVuLGludCAqYmlnKTsKaW50IGNvdW50X2NhcnJ5KGludCogYmlnYSxpbnQqIGJpZ2IsIGludCBsZW4pOwoKaW50IG1haW4gKHZvaWQpIHsKCQoJY2hhciBzdHJfYVtNQVhESUdJVCsxXSA9IHsiXDAifTsKCWNoYXIgc3RyX2JbTUFYRElHSVQrMV0gPSB7IlwwIn07CglpbnQgZW5kb3Jub3RfYSA9IDA7CglpbnQgZW5kb3Jub3RfYiA9IDA7CglpbnQgYVtNQVhESUdJVF07CglpbnQgYltNQVhESUdJVF07CglpbnQgcmVzbGVuID0gMDsKCWludCBjID0gMDsKCQoJd2hpbGUgKHNjYW5mKCIlcyAlcyIsc3RyX2Esc3RyX2IpIT1FT0YpIHsKCgkJZW5kb3Jub3RfYSA9IHJlYWRfZnJvbV9zdHIoc3RybGVuKHN0cl9hKSxhLHN0cl9hKTsKCQllbmRvcm5vdF9iID0gcmVhZF9mcm9tX3N0cihzdHJsZW4oc3RyX2IpLGIsc3RyX2IpOwoKCQlpZiAoKGVuZG9ybm90X2E9PTEpJiYoZW5kb3Jub3RfYj09MSkpewoJCQlicmVhazsKCQl9CQkKCgkJaWYgKHN0cmxlbihzdHJfYSkgPj0gc3RybGVuKHN0cl9iKSkgewoJCQlyZXNsZW4gPSBzdHJsZW4oc3RyX2EpOwoJCX1lbHNlewoJCQlyZXNsZW4gPSBzdHJsZW4oc3RyX2IpOwoJCX0KCQkKCQkvKgoJCXByaW50ZigicmVzbGVuOiVkXG4iLHJlc2xlbik7CgkJCgkJcHJpbnRfbnVtKHN0cmxlbihzdHJfYSksYSk7CgkJcHJpbnRfbnVtKHN0cmxlbihzdHJfYiksYik7CgkJKi8KCgkJYyA9IGNvdW50X2NhcnJ5KGEsYixyZXNsZW4pOwoJCQoJCWlmICAoYyA9PSAwKSB7CgkJCXByaW50ZigiTm8gY2Fycnkgb3BlcmF0aW9uLlxuIik7CgkJfWVsc2UgaWYgKGMgPT0gMSl7CgkJCXByaW50ZigiMSBjYXJyeSBvcGVyYXRpb24uXG4iKTsKCQl9ZWxzZXsKCQkJcHJpbnRmKCIlZCBjYXJyeSBvcGVyYXRpb25zLlxuIixjKTsKCQl9CgoJfQoJCglyZXR1cm4gMDsKfQoKaW50IHJlYWRfZnJvbV9zdHIoaW50IGxlbixpbnQqIGJpZyxjaGFyKiBzdHIpewoJaW50IGkgPSAwOwoKCW1lbXNldChiaWcsMCxzaXplb2YoaW50KSpNQVhESUdJVCk7CgkKCS8qcHJpbnRmKCIlZFxuIixsZW4pOyovCglmb3IgKGkgPSBsZW4tMTsgaSA+PSAwIDsgLS1pKXsKCQliaWdbbGVuLTEtaV09c3RyW2ldLTQ4OwoJCS8qCgkJcHJpbnRmKCJzdHJbJWRdOiVjXG4iLGksc3RyW2ldKTsKCQlwcmludGYoImJpZ1slZF06JWRcbiIsbGVuLTEtaSxiaWdbbGVuLTEtaV0pOwoJCSovCgl9CgoJaWYgKChsZW49PTEpJiYoYmlnWzBdPT0wKSl7CgkJLypwcmludGYoIm51bSBpcyAwXG4iKTsqLwoJCXJldHVybiAxOwoJfQoKfQoKLyoKdm9pZCBwcmludF9udW0oaW50IGxlbixpbnQgKmJpZyl7CglpbnQgaSA9IDA7CgoJZm9yIChpID0gbGVuLTE7IGkgPj0gMDsgLS1pKSB7CgkJcHJpbnRmKCIlZCIsYmlnW2ldKTsKCX0KCXByaW50ZigiXG4iKTsKfQoqLwoKaW50IGNvdW50X2NhcnJ5KGludCogYmlnYSxpbnQqIGJpZ2IsaW50IGxlbil7CglpbnQgaSA9IDA7CglpbnQgY2FycnkgPSAwOwoJaW50IGNvdW50ID0gMDsKCgkvKnByaW50ZigiJWRcbiIsbGVuKTsqLwoJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJLyoKCQlwcmludGYoImJpZ2FbJWRdOiVkXG4iLGksYmlnYVtpXSk7CgkJcHJpbnRmKCJiaWdiWyVkXTolZFxuIixpLGJpZ2JbaV0pOwoJCSovCgkJCQkKCQljYXJyeSA9IChiaWdhW2ldICsgYmlnYltpXSArY2FycnkpIC8gMTA7CgoJCWlmIChjYXJyeSA+IDApewoJCQljb3VudCsrOwoJCX0KCgl9CgoJcmV0dXJuIGNvdW50Owp9