#include <iostream> #include <vector> #include <string> using namespace std; long long t[1000001]; int main(){ long long n; long long k; cin>>n>>k; //n=1;k=1; t[0] = 0; t[1] = 1; for(int i =2;i<62;i++) t[i]=3*t[i-1]-2*t[i-2]; for(int i =0;i<62;i++) t[i]*=3; for(int i =61;i<=1000000;i++)t[i]=t[i-1]; if(n<=61 && t[n]<k){ cout<<"NIE\n"; }else{ char c; if(t[n] >= k*3){ cout<<'a'; c= 'a'; k--; }else if(t[n]*2>=k*3){ cout<<'b'; c= 'b'; k-=(t[n]/3); k--; }else{ cout<<'c'; c= 'c'; k-=2*(t[n]/3); k--; } n--; while(k>0){ if(t[n] >= k*3){ if(c!='a'){ cout<<'a';c='a'; }else{ cout<<'b';c='b'; } k-=1; n--; }else{ if(c!='c'){ cout<<'c';c='c'; }else{ cout<<'b';c='b'; } k-=t[n]/3; k--; n--; } } } 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 63 64 65 66 67 68 69 70 71 72 73 74 | #include <iostream> #include <vector> #include <string> using namespace std; long long t[1000001]; int main(){ long long n; long long k; cin>>n>>k; //n=1;k=1; t[0] = 0; t[1] = 1; for(int i =2;i<62;i++) t[i]=3*t[i-1]-2*t[i-2]; for(int i =0;i<62;i++) t[i]*=3; for(int i =61;i<=1000000;i++)t[i]=t[i-1]; if(n<=61 && t[n]<k){ cout<<"NIE\n"; }else{ char c; if(t[n] >= k*3){ cout<<'a'; c= 'a'; k--; }else if(t[n]*2>=k*3){ cout<<'b'; c= 'b'; k-=(t[n]/3); k--; }else{ cout<<'c'; c= 'c'; k-=2*(t[n]/3); k--; } n--; while(k>0){ if(t[n] >= k*3){ if(c!='a'){ cout<<'a';c='a'; }else{ cout<<'b';c='b'; } k-=1; n--; }else{ if(c!='c'){ cout<<'c';c='c'; }else{ cout<<'b';c='b'; } k-=t[n]/3; k--; n--; } } } return 0; } |