#include <stdio.h>
long long cl(int i) {
return (1LL<<(i < 64 ? i-1 : 63)) - 1;
}
void bb(int n, long long k, int p) {
long long l = cl(n+1);
putchar('a'+p);
if (!k--) { puts(""); return; }
if (k<l) bb(n-1, k, p == 0 ? 1 : 0);
else bb(n-1, k-l, p == 2 ? 1 : 2);
}
void b(int n, long long k){
long long l = cl(n+1);
k--;
if (k<l) bb(n-1, k, 0);
else if (k<2*l) bb(n-1, k-l, 1);
else if (k<3*l) bb(n-1, k-2*l, 2);
else puts("NIE");
}
int main() {
int n;
long long k;
scanf("%d%lld",&n,&k);
b(n,k);
return 0;
}
/*
a
ab
aba
abc
ac
aca
acb
*/
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 | #include <stdio.h> long long cl(int i) { return (1LL<<(i < 64 ? i-1 : 63)) - 1; } void bb(int n, long long k, int p) { long long l = cl(n+1); putchar('a'+p); if (!k--) { puts(""); return; } if (k<l) bb(n-1, k, p == 0 ? 1 : 0); else bb(n-1, k-l, p == 2 ? 1 : 2); } void b(int n, long long k){ long long l = cl(n+1); k--; if (k<l) bb(n-1, k, 0); else if (k<2*l) bb(n-1, k-l, 1); else if (k<3*l) bb(n-1, k-2*l, 2); else puts("NIE"); } int main() { int n; long long k; scanf("%d%lld",&n,&k); b(n,k); return 0; } /* a ab aba abc ac aca acb */ |
English