CF8E Beads

题目描述

有一个叫 Zorg 的火星男孩想要送一串珠链给他来自地球的朋友 Masha。他知道 Masha 喜欢两种颜色:蓝色和红色。刚好他来到的商店里,有各种由这两种颜色珠子组成的饰品。所有珠链都有一个小扣子,如果解开扣子,会发现商店里的所有珠链长度都相同。由于火星人的视觉特点,如果 Zorg 先看到一串蓝红珠链,然后又看到另一串,只是所有红色珠子和蓝色珠子的颜色互换位置,他会认为这两串珠链是一样的。换句话说,Zorg 认为相同的不仅包括可以通过翻转得到的珠链,还包括颜色互换及/或翻转后得到的珠链也为相同。 已知所有火星人都非常有条理,如果一个火星人看见许多物品,他会把它们好好地整理一番。Zorg 认为红色珠子比蓝色小。我们用 0 表示红色珠子,用 1 表示蓝色珠子。对于两串珠链,Zorg 总是把第 $i$ 位是红色珠子的串排到前面(如果另一串的第 $i$ 位是蓝色,并且前 $i-1$ 位完全相同)。 起初,Zorg 会先把所有珠链解开,把它们分成若干堆,每堆在他看来都算相同。然后,他从每一堆中选出 Zorg 认为的最小串,多余的串还给售货员,说自己不需要了。接着,Zorg 会对保留的珠链进行排序,最后选择第 $k$ 个。 但这些操作会花掉 Zorg 很多时间,所以他请你帮忙,计算出他最终会选给 Masha 的那串珠链。

输入格式

输入包括两个整数 $n$ 和 $k$ ($2 \le n \le 50; 1 \le k \le 10^{16}$),分别表示珠链的长度和 Zorg 所选定的珠链的编号。

输出格式

输出第 $k$ 个珠链,用 0 表示红色珠子,1 表示蓝色珠子。如果不存在第 $k$ 个珠链,输出 -1。

说明/提示

以长度为 4 的串举例:0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110。Zorg 会把它们分成如下几堆:{0001, 0111, 1000, 1110}, {0010, 0100, 1011, 1101}, {0011, 1100}, {0101, 1010}, {0110, 1001}。然后他会从每一堆中选出最小的珠链:0001、0010、0011、0101、0110。第 4 个珠链是 0101。 由 ChatGPT 5 翻译