#include #include char* secti(char* c1, char* c2, char* v, int z); int main() { int zaklad; char c1[3000], c2[3000], vysl[3000]; scanf("%d",&zaklad); while(zaklad != 0) { scanf("%s %s", c1, c2); printf("%s + %s = %s\n", c1 , c2, secti(c1,c2,vysl,zaklad)); scanf("%d",&zaklad); } return 0; } char* secti(char* c1, char* c2, char* v, int z) { int n1, n2; int cp1, cp2; int vp; int zbytek=0; vp=3000-2; v[3000-1]=0; cp1=strlen(c1)-1; cp2=strlen(c2)-1; while(1) { if(cp1>=0) { n1=c1[cp1]; if(n1 > '9') n1 -=('A'-10); else n1 -= '0'; } else n1=0; if(cp2>=0) { n2=c2[cp2]; if(n2 > '9') n2 -= ('A'-10); else n2-='0'; } else n2=0; n1+=n2+zbytek; if(z!=1) { zbytek = n1/z; n1 %= z; } else { zbytek = (n1>1?n1-1:0); n1 = (n1>0?1:0); } if(n1 > 9) v[vp]=n1+'A'-10; else v[vp]=n1+'0'; if(cp1<=0 && cp2 <=0 && zbytek == 0) break; vp--; cp1--; cp2--; } return v+vp; }