#include #include #define MAX 1000 int zaklad; long cifra( char c ) { if ( c <= '9' ) { return c - '0'; } else { return toupper( c ) - 'A' + 10; } } char vysledok[ MAX + 2 ]; int main( void ) { int i, j; char s1[ MAX + 1 ], s2[ MAX + 1 ]; char *vys; int vysx; int pretec; vysledok[ sizeof( vysledok ) - 1 ] = 0; while ( 1 ) { scanf( "%d\n", &zaklad ); if ( !zaklad ) return 0; scanf( "%s %s\n", s1, s2 ); if ( zaklad == 1 ) { if ( *s1 == '0' ) { printf( "%s + %s = %s\n", s1, s2, s2 ); } else if ( *s2 == '0' ) { printf( "%s + %s = %s\n", s1, s2, s1 ); } else { printf( "%s + %s = ", s1, s2 ); for ( i = strlen( s1 ) + strlen( s2 ); i > 0; i-- ) printf( "1" ); printf( "\n" ); } } else { pretec = 0; i = strlen( s1 ) - 1; j = strlen( s2 ) - 1; vys = vysledok + MAX + 1; while ( ( i >= 0 ) && ( j >= 0 ) ) { vysx = pretec; if ( i >= 0 ) { vysx += cifra( s1 [ i ] ); i--; } if ( j >= 0 ) { vysx += cifra( s2 [ j ] ); j--; } if ( vysx >= zaklad ) { pretec = 1; vysx -= zaklad; } else { pretec = 0; } if ( vysx >9 ) { *--vys = 'A' + vysx - 10; } else { *--vys = '0' + vysx; } } if ( pretec ) { vys--; *vys = '1'; } while ( *vys == '0' ) vys++; if ( !*vys ) { vys--; *vys = '0'; } printf( "%s + %s = %s\n", s1, s2, vys ); } } }