AT_agc044_c [AGC044C] Strange Dance
题目描述
有 $3^N$ 个人围成一圈跳舞。我们从某个位置开始,顺时针依次给圈上的每个人编号为 $0,1,\dots,3^N-1$。一开始,每个编号的位置上都站着一个人。
接下来会播放两种音乐,分别是“萨尔萨”和“伦巴”,人们会根据音乐跳舞。
- 当播放萨尔萨时,编号为 $i$ 的人会移动到编号为 $j$ 的位置。$j$ 的获得方式是:将 $i$ 用三进制表示,把每一位上的 $1$ 替换成 $2$,每一位上的 $2$ 替换成 $1$,然后将结果转回十进制。例如,编号 $46$ 的人会移动到编号 $65$ 的位置。
- 当播放伦巴时,编号为 $i$ 的人会移动到编号为 $i+1$ 的位置。如果 $i+1=3^N$,则回到编号 $0$ 的位置。
给定一个字符串 $T=T_1T_2\dots T_{|T|}$,其中 $T_i=$`S` 表示第 $i$ 首播放的是萨尔萨,$T_i=$`R` 表示第 $i$ 首播放的是伦巴。假设一开始编号为 $i$ 的人是第 $i$ 个人。所有音乐播放结束后,第 $i$ 个人最终站在编号 $P_i$ 的位置。请输出序列 $P_0,P_1,\dots,P_{3^N-1}$。
输入格式
输入从标准输入读入,格式如下:
> $N$ $T$
输出格式
请按以下格式输出到标准输出:
> $P_0$ $P_1$ $\cdots$ $P_{3^N-1}$
说明/提示
### 限制条件
- $1 \le N \le 12$
- $1 \le |T| \le 200,\!000$
- $T$ 由 `S` 和 `R` 组成。
### 样例解释 1
在第一首音乐播放前,编号为 $i$ 的人是第 $i$ 个人。
1. 播放第一次萨尔萨后,编号 $0,1,2$ 的人分别站在位置 $0,2,1$。
2. 播放伦巴后,编号 $0,1,2$ 的人分别站在位置 $1,0,2$。
3. 播放第二次萨尔萨后,编号 $0,1,2$ 的人分别站在位置 $2,0,1$。
由 ChatGPT 4.1 翻译