#include <iostream> #include <algorithm> using namespace std; int fib[45]; void InitFib() { fib[0]=1; fib[1]=2; for (int i=2;i<=44;i++) fib[i] =fib[i-1]+fib[i-2]; } int main() { int n,k,i,j; cin>>n>>k; //n位数字,第k个 InitFib(); if (fib[n]<k) { cout<<"-1"<<endl; return 1; } short* bs = new short[n+1]; memset(bs,0,sizeof(short)*n); int last =k; //last表示剩下的量 for (j=n; j>= 0; j--) //j表示处理第j位 if (fib[j]<last) { bs[j] =1; //第j位应该是1 last =last -fib[j]; } for (j=n-1;j>=0;j--) { cout<<bs[j]; } cout<<endl; return 0; }