#include #include int radix; char num1[1005], num2[1005], sum[2010]; int val(char c) { if( c >= '0' && c <= '9' ) return c - '0'; return c - 'A' + 10; } inline char chr(int i) { return (i < 10) ? ('0' + i) : ('A' - 10 + i); } void secti() { int carry = 0; int idx = 0; int sub = 0; char * rest; while( num1[idx] && num2[idx] ) { sub = val(num1[idx]) + val(num2[idx]) + carry; sum[idx] = chr(sub % radix); carry = sub / radix; idx++; } rest = (num1[idx] == 0) ? num2 : num1; while( rest[idx] ) { sub = val(rest[idx]) + carry; sum[idx] = chr(sub % radix); carry = sub / radix; idx++; } if(carry) sum[idx++] = chr(carry); sum[idx] = 0; } void readnum(char * result) { char line[2100]; int i=0, j=0; scanf("%s\n", line); i = strlen(line); while(i > 0) result[j++] = line[--i]; result[j] = 0; } int readones() { char line[2100]; int i; scanf("%s\n", line); printf("%s", line); i = strlen(line); return i; } void printones(int cnt) { char put[2100]; int i=0; while(i < cnt) put[i++] = '1'; put[i] = 0; printf("%s", put); } void printnum(char num[]) { char put[2100]; int i=0, j=0; i = strlen(num); while(i > 0) put[j++] = num[--i]; put[j] = 0; printf("%s", put); } int main() { int s; for(;;) { scanf("%d\n", &radix); if(radix == 0) break; if(radix == 1) { s = readones(); printf(" + "); s += readones(); printf(" = "); printones(s); printf("\n"); } else { readnum(num1); readnum(num2); printnum(num1); printf(" + "); printnum(num2); printf(" = "); secti(); printnum(sum); printf("\n"); } } return 0; }