OpenJudge

26:锁

总时间限制:
10000ms
单个测试点时间限制:
1000ms
内存限制:
128000kB
描述

给出N和K,要求生成从0到2N-1的一个序列,序列的第一项为0,并且该序列满足以下三个条件:

  1. 序列长度为2N,保证0到2N-1,每个数都用了且仅用了一次

  2. 序列中任意两相邻的数都是由前一个数在其二进制下,改变了具有相同值的若干个位而形成的,即把其中若干个0变为1,或把其中若干个1变成0,并且只能二选一

  3. 当存在多个序列满足前两个条件的时候,要保证字典序最小,即由前一个数生成后一个数的时候,要挑选值最小的数(当然是满足前两个条件的情况下)

现问你这个序列前K项中最大值是多少,输出其二进制形式,注意一定要输出N位,包括前导零

输入
仅一行两个整数N、K
输出
一个二进制表示的数,为所求答案。
样例输入
3 8
样例输出
111
提示
整个序列为“000”,“001”,“011”,“010”,“110”,“100”,“101”,“111”
1≤N≤50,1≤K≤2^N,K可能超longint
全局题号
6510
添加于
2013-10-31
提交次数
2
尝试人数
1
通过人数
0