#include #include #define MAX_DIG 2000 char * numbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char ret1[MAX_DIG+1] , ret2[MAX_DIG+1], ret3 [(2 * MAX_DIG)+1]; int main (void) { int zaklad; char * pos1, *pos2, *pos3; int val1, val2, val3; int prenos; while (1) { prenos=0; scanf("%d", &zaklad); if (zaklad == 0 ) { return 0; } scanf("%s %s", ret1, ret2); if ( zaklad == 1 ) { printf("%s%s\n", ret1, ret2); continue; } else { val3=0; pos1=ret1+(strlen(ret1)-1); pos2=ret2+(strlen(ret2)-1); pos3=ret3 + 2 * MAX_DIG; while (pos1 >= ret1 || pos2 >= ret2) { if (pos1 >= ret1) { val1=strchr(numbers, *pos1) - numbers; pos1--; } else { val1 = 0; } if (pos2 >= ret2) { val2=strchr(numbers, *pos2) - numbers; pos2--; } else { val2 = 0; } val3 = val1 + val2 + prenos; prenos = 0; while (val3 >= zaklad) { val3 -= zaklad; prenos++; } /*fprintf(stderr, "A=%c, B=%c, TRANS=%i, val=%i\n", *(pos1+1), *(pos2+1), prenos, val3 );*/ *pos3 = numbers [val3]; pos3--; } if (prenos) { *pos3 = numbers [prenos]; } else { pos3++; } printf("%s\n", pos3); } } }