#include #include int main() { int i,j; char cisla[255]; char znaky[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; j=0; for ( i = (int)'0'; i <= (int)'9'; i++, j++ ) cisla[i] = j; j = 10; for ( i = (int)'A'; i < (int)'Z'; i++, j++) cisla[i] = j; int zaklad, lenA, lenB; char strA[1005]; char strB[1005]; char vysledek[1007]; char * manA, *manB; for ( ; ; ) { scanf( "%d", &zaklad ); if ( zaklad == 0 ) break; scanf( "%s %s", strA, strB ); lenA = strlen(strA); lenB = strlen(strB); // printf ( "lenA: %d\nlenB: %d\n", lenA, lenB ); if ( zaklad == 1 ) { int pocet1 = (( strA[0] != '0' )? lenA : 0 ) + ( (strB[0] != '0')? lenB : 0 ); if ( pocet1 ) { for ( int k = 0; k < pocet1; k++ ) vysledek[k] = '1'; vysledek[pocet1] = '\0'; } else { vysledek[0] = '0'; vysledek[1] = '\0'; } printf( "%s + %s = %s\n", strA, strB, vysledek ); continue; } if ( lenA < lenB ) { int x = lenA; lenA = lenB; lenB = x; manB = (char*)strA; manA = (char*)strB; } else { manB = strB; manA = strA; } int posA = lenA-1, posB = lenB-1, posV = 1003; int soucet=0, prenos=0, soucetcifer; vysledek[1004] = '\0'; // printf( "manA: %s\nmanB: %s\n", manA, manB ); while ( posB >= 0 ) { soucetcifer = prenos + cisla[manA[posA]] + cisla[manB[posB]]; prenos = soucetcifer / zaklad; soucet = (soucetcifer % zaklad); vysledek[posV] = znaky[soucet]; // printf( "soucetcifer: %d\nprenos: %d\nsoucet: %d\n", soucetcifer, prenos, soucet ); // printf( "posv: %d", posV ); // printf( "vysledek: %s", vysledek + posV ); posB--; posA--; posV--; } while ( posA >= 0 ) { soucetcifer = prenos + cisla[manA[posA]]; prenos = soucetcifer / zaklad; soucet = soucetcifer % zaklad; vysledek[posV] = znaky[soucet]; posA--; posV--; } if ( prenos ) vysledek[posV] = znaky[prenos]; else posV++; printf( "%s + %s = %s\n", strA, strB, vysledek+posV ); } return 0; }