#include #include void secti1(void) { char ca[1001], cb[1001]; int a, b; scanf("%s %s", ca, cb); if (ca[0] == '0') a = 0; else a = strlen(ca); if (cb[0] == '0') b = 0; else b = strlen(cb); // printf("%d: %s\n", a, ca); // printf("%d: %s\n", b, cb); a += b; printf("%s + %s = ", ca, cb); if (a == 0) printf("0"); for (; a > 0; a--) printf("1"); printf("\n"); } char tosoust(int x) { return (x > 9) ? x - 10 + 'A' : x + '0'; } int toint(char x) { return (x >= 'A') ? x - 'A' + 10 : x - '0'; } void secti(int soust) { char ca[3000],cv[3001], cb[3000]; int i,j,k, carry; int a,b; scanf("%s %s", ca, cb); printf("%s + %s = ",ca, cb); carry = 0; i = strlen(ca)-1; j = strlen(cb)-1; cv[3000] = '\0'; k = 2999; while( (i>=0) && (j >= 0) ) { a = toint(ca[i]); b = toint(cb[j]); cv[k] = tosoust( (a+b+carry) % soust); carry = (a +b + carry) / soust; k--; i--; j--; } while(i>=0) { a = toint(ca[i]); cv[k] = tosoust( (a+carry) % soust); carry = (a + carry) / soust; k--; i--; } while(j>=0) { b = toint(cb[j]); cv[k] = tosoust( (b+carry) % soust); carry = (b+carry) / soust; k--; j--; } if(carry>0) { cv[k] = tosoust(carry); k--; } k++; printf("%s\n",&cv[k]); } int main(void) { int i; do { scanf("%d", &i); if (i > 1) secti(i); if (i == 1) secti1(); } while (i > 0); return(0); }