#include #include #include #define isin(x, a, b) ((x >= a) && (x <= b)) long int prevod(char *a, int zaklad) { long int result = 0; int len = strlen(a); // for (int i = 0; i < len; i++) for (int i = 0; i < len; i++) { if (zaklad == 1) { if (a[i] == '1') result++; } else result += (int)((isin(a[i], '0', '9') ? a[i] - '0' : a[i] - 'A' + 10) * pow(zaklad, len - i - 1)); } // printf("--(%d)--", result); return result; } char* prevodZpet(long int cislo, int zaklad) { static char zpet[2004]; for (int i = 0; i < 2004; i++) zpet[i]=0; if (cislo == 0) { zpet[0] = '0'; zpet[1] = 0; return zpet;} // for (unsigned int i = 0; i < strlen(zpet); i++) zpet[i] = 0; if (zaklad == 1) { for (int i = 0; i < cislo; i++) zpet[i] = '1'; return zpet; } int i = 0; while (cislo) { long int modl; modl = cislo % zaklad; // printf("%d", modl); zpet[i] = (modl >= 10) ? ('A' - 10 + modl) : ('0' + modl); cislo /= zaklad; i++; } zpet[i] = 0; static char zpet2[2004]; int len = strlen(zpet); for (int i = 0; i < len; i++) zpet2[len - i- 1] = zpet[i]; zpet2[len]=0; //printf("\n%s\n",zpet); return zpet2; } void provedTo(char *a, char* b, int zaklad) { long int c1 = prevod(a, zaklad); long int c2 = prevod(b, zaklad); // printf(" >>>(%d %d)<<< ", c1,c2); long int soucet = c1 + c2; printf("%s + %s = %s\n", a, b, prevodZpet(soucet, zaklad)); } int main() { int zaklad; char a[1001], b[1001]; while (true) { scanf("%d", &zaklad); if (zaklad == 0) break; scanf("%s %s", a, b); provedTo(a, b, zaklad); } return 0; }