#include #include long long char_int(int base, char *op); void int_char(int base, long long num, char *res); char moz[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; int main() { int z; scanf("%d", &z); char op1[1000], op2[1000], res[2000]; long long num1, num2; while (z != 0) { scanf("%s %s", op1, op2); /*printf("%d", '0'); printf("%d", '1'); printf("%d", '9'); */ num1 = char_int(z, op1); // printf("%d\n", num1); num2 = char_int(z, op2); // printf("%d\n", num2); int_char (z, num1 + num2, res); printf("%s + %s = %s\n", op1, op2, res); scanf("%d", &z); } return 0; } long long char_int(int base, char *op) { int len = strlen(op); char cif; long long mezi; int j; long long res = 0; /* int asc_0 = (int) '0'; int asc_9 = (int) '9'; int asc_A = (int) 'A'; int asc_Z = (int) 'Z'; */ for (int i = 0 ; i < len ; i ++) { cif = *(op + i); mezi = (long long)pow(base, len - i - 1); /* int asc_0 = (int) '0'; int asc_9 = (int) '9'; */ // if (cif < for (j = 0 ; j < 36 ; j++) if (cif == moz[j]) break; res += mezi * j; } return res; } void int_char(int base, long long num, char *res) { long long mezi_vy; char pom[2000]; int i = 0; int j; strcmp(res, "0"); *(res + 1) = '\0'; if (base == 1) { *(res) = '0'; if (num != 0) for (j = 0 ; j < num ; j++) *(res + j) = '1'; *(res + j) = '\0'; } else { while (num != 0) { pom[i] = moz[num % base]; mezi_vy = num / base; num = mezi_vy; // printf("mezi%d i++; } pom[i] = '\0'; int len = strlen(pom); int i; for (i = 0 ; i < len ; i ++) *(res + len - i - 1) = *(pom + i); *(res + i) = '\0'; } }