#include #include int pocitej() { int z = 0; scanf("%d", &z); if(z==0) return 0; #define MAX 1005 char c1[MAX], c2[MAX], v[MAX]; char c1p[MAX], c2p[MAX]; c1[0] =0; c2[0] = 0; scanf("%s %s", c1, c2); strcpy(c1p, c1); strcpy(c2p, c2); if(z==1) { if(c1[0] == '0') c1[0] = 0; if(c2[0]== '0') c2[0] = 0; if(c1[0] ==0 && c2[0]==0) strcpy(c1, "0"); printf("%s + %s = %s%s\n", c1p, c2p, c1, c2); return 1; } int lc1=strlen(c1); int lc2=strlen(c2); int prevod = 0; // printf("pred prevodem\n"); for(int i=0; i=0) c1[MAX-i-1] = (c1[lc1-i-1]>='A' && c1[lc1-i-1]<='Z')?c1[lc1-1-i]-'A'+10:c1[lc1-1-i]-'0'; else c1[MAX-i-1] = 0; if(lc2-i-1>=0) c2[MAX-i-1] = (c2[lc2-i-1]>='A' && c2[lc2-i-1]<='Z')?c2[lc2-1-i]-'A'+10:c2[lc2-1-i]-'0'; else c2[MAX-i-1] = 0; } // for(int i=0; i=0 && (c2[i]!=0 || c1[i]!=0 || prevod!=0);i--) { v[i] = prevod+c1[i]+c2[i]; prevod = v[i]/z; v[i] = v[i]%z; } int last; //printf("pred vypsanim\n"); for(int i=MAX-1; i>=0; i--) { //printf("i=%d, V[i]=%d\n", i, v[i]); if(v[i]!=0) last = i; v[i] = (v[i]>9)?v[i]-10+'A':v[i]+'0'; } char pom[MAX]; //printf("pred strcpy\n"); strncpy(pom, (v+last), MAX-last); pom[MAX-last] = 0; printf("%s + %s = %s\n", c1p, c2p, pom); return 1; } int main() { while(pocitej() != 0); return 0; }