ural 1081. Binary Lexicographic Sequence
http://acm.timus.ru/problem.aspx?space=1&num=1081
无语了一个简单题花了一个下午才调出来,悲剧啊;
题意:给定一个有N个元素的字符串,每个元素都是0或1,且1和1不能相连,问第n个字符串是什么;
思路;首先是一个斐波那契数列,然后往下减输出;
View Code
#include<cstdio>
#include<cstring>
using namespace std;
int s[50];
void pp(int i,int num)
{
if(i<1)
return ;
if(i<=1)
{
if(num==1||num<=0)
printf("0");
if(num==2)
printf("1");
return ;
}
if(num>s[i-1]&&num<=s[i])
{
printf("10");
num=num-s[i-1];
pp(i-2,num);
}
else
{
printf("0");
pp(i-1,num);
}
}
int main()
{
int n,num,i;
scanf("%d%d",&n,&num);
memset(s,0,sizeof(s));
s[1]=2;
s[2]=3;
for(i=3;i<45;i++)
s[i]=s[i-1]+s[i-2];
if(num>s[n])
printf("-1\n");
else
{
for(i=1;i<45;i++)
if(s[i]>=num)
break;
for(int j=1;j<=n-i;j++)
printf("0");
pp(i,num);
printf("\n");
}
return 0;
}