Posted on 2011-11-02 14:12
C小加 阅读(1448)
评论(0) 编辑 收藏 引用 所属分类:
解题报告
简单DP
#include <iostream>
using namespace std;
const int MAXN=46;
int f[MAXN];
int main()
{
int n,k;
cin>>n>>k;
f[0]=1;
f[1]=2;
f[2]=3;
for(int i=3;i<=n;i++)
f[i]=f[i-2]+f[i-1];
if(k>f[n]) cout<<"-1"<<endl;
else
{
int q=n-1;
while(q>=0)
{
if(k<=f[q]) cout<<0;
else
{
cout<<1;
k-=f[q];
}
q--;
}
}
return 0;
}