#P1392. Ouroboros Snake

    ID: 393 传统题 2000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>图结构欧拉回路搜索DFSMid-Central European Regional Contest 2000

Ouroboros Snake

题目描述(中文版)

描述
Ouroboros(衔尾蛇)是古埃及神话中的一条蛇,它用嘴咬住自己的尾巴并不断吞噬自己。

Ouroboros数 是指具有以下特性的2n2^n位二进制数:它们能够"生成"从002n12^n - 1的所有数字。生成规则如下:给定一个Ouroboros数,我们将其2n2^n位二进制数首尾相连形成一个环形。然后,从这个环中每次取nn位连续比特(每次起始位置向后移动一位),共可得到2n2^n个不同的nn位二进制数。这样的环形结构称为nn阶Ouroboros环。本题我们只考虑每组nn中最小的Ouroboros数。

示例
n=2n = 2时,存在四个Ouroboros数:00110011011001101100110010011001。其中最小的数是00110011。其Ouroboros环如下:

函数定义
函数o(n;k)o(n;k)计算nn阶最小Ouroboros数的环中第kk个数字。您的程序需要实现该函数。

输入输出格式

输入
包含多个测试用例。每个测试用例为一行,包含两个整数nnkk1n151 \leq n \leq 150k<2n0 \leq k < 2^n)。输入以两个00结束(此行不处理)。

输出
对每个测试用例,单独一行输出o(n;k)o(n;k)

示例

输入样例 1

2 0
2 1
2 2
2 3
0 0

输出样例 1

0
1
3
2

来源
2000年中欧地区竞赛