测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A3014.

编程题 普及-

题目描述

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

1. 序列长度为 $2^N$,保证 $0$ 到 $2^N-1$ 的每个数都用了且只用了一次。
2. 序列中任意两相邻的数都是由前一个数在其二进制下,改变了具有相同值的若干个位而形成的,即把其中若干个 $0$ 变为 $1$,或把其中若干个 $1$ 变为 $0$,并且只能二选一。
3. 当存在多个序列满足前两个条件的时候,要保证字典序最小,即由前一个数生成后一个数的时候,要挑值最小的数(当然是满足前两个条件的情况下)。

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

输入格式

仅一行两个整数 $N,K$。

输出格式

一个二进制表示的数,为所求的答案。

输入输出样例

输入 #1
3 8
输出 #1
111

说明/提示

### 样例解释

生成的序列为 $[000,001,011,010,110,100,101,111]$。前 $8$ 项当中的最大值为 $111$。

### 数据范围及约定

对于全部数据,$1 \le N \le 50,1 \le K \le 2^N$。
上一题 去做题 下一题