A. 格雷码

    Type: Default 1000ms 256MiB

格雷码

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

格雷码

题目描述

通常,人们习惯将所有 nn 位二进制串按照字典序排列,例如所有 2 位二进制串按字典序从小到大排列为:00,01,10,11。

格雷码(Gray Code)是一种特殊的 nn 位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地,第一个串与最后一个串也算作相邻。

所有 2 位二进制串按格雷码排列的一个例子为:00,01,11,10。

nn 位格雷码不止一种,下面给出其中一种格雷码的生成算法:

  1. 1 位格雷码由两个 1 位二进制串组成,顺序为:0,1。
  2. n+1n + 1 位格雷码的前 2n2^n 个二进制串,可以由依此算法生成的 nn 位格雷码(总共 2n2^n 个 nn 位二进制串)按顺序排列,再在每个串前加一个前缀 0 构成。
  3. n+1n + 1 位格雷码的后 2n2^n 个二进制串,可以由依此算法生成的 nn 位格雷码(总共 2n2^n 个 nn 位二进制串)按逆序排列,再在每个串前加一个前缀 1 构成。

综上,n+1n + 1 位格雷码,由 nn 位格雷码的 2n2^n 个二进制串按顺序排列再加前缀 0,和按逆序排列再加前缀 1 构成,共 2n+12^{n+1} 个二进制串。另外,对于 nn 位格雷码中的 2n2^n 个 二进制串,我们按上述算法得到的排列顺序将它们从 0∼2n−10 \sim 2^n - 1 编号。

按该算法,2 位格雷码可以这样推出:

  1. 已知 1 位格雷码为 0,1。
  2. 前两个格雷码为 00,01。后两个格雷码为 11,10。合并得到 00,01,11,10,编号依次为 0 ~ 3。

同理,3 位格雷码可以这样推出:

  1. 已知 2 位格雷码为:00,01,11,10。
  2. 前四个格雷码为:000,001,011,010。后四个格雷码为:110,111,101,100。合并得到:000,001,011,010,110,111,101,100,编号依次为 0 ~ 7。

现在给出 nn,kk,请你求出按上述算法生成的 nn 位格雷码中的 kk 号二进制串。

输入格式

仅一行两个整数 nn,kk,意义见题目描述。

输出格式

仅一行一个 nn 位二进制串表示答案。

输入输出样例 #1

输入 #1

2 3

输出 #1

10

输入输出样例 #2

输入 #2

3 5

输出 #2

111

输入输出样例 #3

输入 #3

44 1145141919810

输出 #3

00011000111111010000001001001000000001100011

说明/提示

【样例 1 解释】

2 位格雷码为:00,01,11,10,编号从 0∼3,因此 3 号串是 10。

【样例 2 解释】

3 位格雷码为:000,001,011,010,110,111,101,100,编号从 0∼7,因此 5 号串是 111。

【数据范围】

对于 50%50\% 的数据:n≤10n \leq 10

对于 80%80\% 的数据:k≤5×106k \leq 5 \times 10^6

对于 95%95\% 的数据:k≤263−1k \leq 2^{63} - 1

对于 100%100\% 的数据:1≤n≤641 \leq n \leq 64, 0≤k<2n0 \leq k \lt 2^n

寒假集训线上测试1-提高组

Not Attended
Status
Done
Rule
OI
Problem
3
Start at
2026-2-7 19:00
End at
2026-2-7 21:00
Duration
2 hour(s)
Host
Partic.
15