#include <iostream> #include <vector> static std::vector< std::vector< char > > v = { { 'b', 'c' }, {'a', 'c'}, {'a', 'b'}}; void slowo( long int n, long int k ) { long int wszystkie = 3*( (1 << n) - 1); if ( k > wszystkie ) { std::cout << "NIE" << std::endl; return; } char last; if ( k <= (1<<n)-1 ) last = 'a'; else if (k <=2*((1<<n)-1)) { last = 'b'; k -= ((1<<n)-1); } else { last = 'c'; k -= 2*((1<<n)-1); } k--; n--; std::cout << last; while( k > 0 ) { if( k < (1<<n)) { last = v[last-'a'][0]; } else { last = v[last-'a'][1]; k -= ((1<<n)-1); } k--; n--; std::cout << last; } std::cout << std::endl; } int main() { long int n, k; std::cin >> n >> k; slowo(n,k); /* for( int i=1; i<=k; i++) { slowo( n, i ); }*/ return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> #include <vector> static std::vector< std::vector< char > > v = { { 'b', 'c' }, {'a', 'c'}, {'a', 'b'}}; void slowo( long int n, long int k ) { long int wszystkie = 3*( (1 << n) - 1); if ( k > wszystkie ) { std::cout << "NIE" << std::endl; return; } char last; if ( k <= (1<<n)-1 ) last = 'a'; else if (k <=2*((1<<n)-1)) { last = 'b'; k -= ((1<<n)-1); } else { last = 'c'; k -= 2*((1<<n)-1); } k--; n--; std::cout << last; while( k > 0 ) { if( k < (1<<n)) { last = v[last-'a'][0]; } else { last = v[last-'a'][1]; k -= ((1<<n)-1); } k--; n--; std::cout << last; } std::cout << std::endl; } int main() { long int n, k; std::cin >> n >> k; slowo(n,k); /* for( int i=1; i<=k; i++) { slowo( n, i ); }*/ return 0; } |