URAL 1081 Binary Lexicographic Sequence

 

第13个位置第5个Bit :13>num[4] =>1 第四个bit 13-num[4]=5 :5<num[3] =>0 ,3-1 第三个Bit 5>num[2](3) 5-num[2]=2 ...

#include<stdio.h>

int num[45];

void init()
{
    num[0]=1;
    num[1]=2;
    int k=2;
    while(k<44)
    {
        num[k]=num[k-1]+num[k-2];
        k++;
    }
}

int main(void)
{
    init();
    int n,k;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        if(k>num[n])
            printf("-1\n");
        else
        {
            while(n)
            {
                if(k>num[n-1])
                {
                    putchar('1');
                    k-=num[n-1];
                }
                else
                    putchar('0');
                n--;
            }
            putchar('\n');
        }
    }
    return 0;
}

 

posted @ 2014-07-28 23:01  keyboard3  阅读(123)  评论(0编辑  收藏  举报