#include #include int parse_nr(char*,int); void put_nr(char*, int, int); int main() { int zaklad, cislo1, cislo2; scanf("%d",&zaklad); while(zaklad != 0) { char c1[3000], c2[3000]; scanf("%s %s", c1, c2); cislo1 = parse_nr(c1, zaklad); cislo2 = parse_nr(c2, zaklad); /* printf("%d + %d = %d\n", cislo1, cislo2, (cislo1+cislo2));*/ printf("%s + %s =", c1 , c2); put_nr(c1, (cislo1+cislo2),zaklad); printf(" %s\n", c1); scanf("%d",&zaklad); } return 0; } int parse_nr(char* c, int z) { int i,x, vysl=0, pos=1; for(i=strlen(c)-1; i >= 0; i--) { if(isdigit(c[i])) x=c[i]-'0'; if(isalpha(c[i])) x=10+(toupper(c[i])-'A'); vysl+=x*pos; pos *= z; } return vysl; } void put_nr(char* c, int nr, int z) { int pow=1, pos=0; if(nr==0) { strcpy(c,"0"); return; } if(z==1) { for(pos=0; pos < nr; pos++) c[pos]='1'; c[pos]=0; return; } while(pow <= nr) pow *= z; pow /= z; while(1) { int digit = nr/pow; if(pos > 0 || digit != 0) { char d; if(digit < 10) d = '0' + digit; else d = 'A' + digit - 10; c[pos] = d; pos++; } nr = nr%pow; if(pow == 1) break; pow /= z; } c[pos]=0; }