#include #include #include #include #include inline int MAX(int a,int b) { return ((a)>(b))?(a):(b); } #define HODNOTA(x) (isdigit(x)?(x-'0'):(x-'A'+10)) #define V 1500 inline char DEHODN(int c) { return ((c<10)?(c+'0'):(c-10+'A')); } int main() { int konec=0; char ax[V],ay[V]; int zaklad,q; char *xx,*yy; char vysl[V]; char *vv; scanf("%d\n",&zaklad); if(zaklad==0) konec=1; while (!konec){ if (zaklad==1) { int p=0; char x[V],y[V]; scanf("%s %s\n", x, y); printf("%s + %s = ",x, y); for (unsigned int i=0; i=zaklad)?(tmp-zaklad+1):(0)) { tmp-=zaklad; } char zn=DEHODN(tmp); *vv=zn; // printf("%s - %d\n",vv,tmp); } for (;(*yy!='*');yy--){ int tmp; tmp=HODNOTA(*yy)+prenos; if (prenos=(tmp>=zaklad)?(tmp-zaklad+1):(0)) { tmp-=zaklad; } char zn=DEHODN(tmp); *vv=zn; // printf("%s - %d\n",vv,tmp); vv--; /* int tmp; tmp=HODNOTA(*yy)+prenos; prenos; *vv=DEHODN(tmp); // (tmp>=zaklad)?(prenos=0):(prenos=tmp-zaklad,tmp)); printf("%s - %d\n",vv,tmp); */ } // printf("%s\n",vv); for (;(*xx!='*');xx--){ int tmp; tmp=HODNOTA(*xx)+prenos; if (prenos=(tmp>=zaklad)?(tmp-zaklad+1):(0)) { tmp-=zaklad; } char zn=DEHODN(tmp); *vv=zn; // printf("%s - %d\n",vv,tmp); vv--; /* int tmp; tmp=HODNOTA(*xx)+prenos; if (prenos=(tmp>=zaklad)?(tmp-zaklad+1):(0)) { tmp-=zaklad; } prenos=0; *vv=DEHODN(tmp); //tmp>=zaklad?(prenos=0):(prenos=tmp-zaklad,tmp); printf("%s - %d\n",vv,tmp); */ } vv++; if (prenos) { printf("%s + %s = 1%s\n",x,y,vv); } else { printf("%s + %s = %s\n",x,y,vv); } } scanf("%d",&zaklad); if(zaklad==0) konec=1; } return 0; }