CF999B Reversing Encryption
题目描述
长度为 $n$ 的字符串 $s$ 可以通过以下算法加密:
- 按照从大到小的顺序遍历 $n$ 的所有约数(即从 $n$ 到 $1$);
- 对于每个约数 $d$,将子串 $s[1 \dots d]$(即从第 $1$ 个字符到第 $d$ 个字符的子串)进行反转。
例如,将上述算法应用于字符串 $s$ = "codeforces" 时,变化过程如下:"codeforces" $\to$ "secrofedoc" $\to$ "orcesfedoc" $\to$ "rocesfedoc" $\to$ "rocesfedoc"(显然,最后一次反转操作不会改变字符串,因为 $d=1$)。
现在给定加密后的字符串 $t$,你的任务是解密该字符串,即找到一个字符串 $s$,使得按照上述算法加密后得到字符串 $t$。可以证明,这样的字符串 $s$ 总是存在且唯一。
输入格式
输入的第一行包含一个整数 $n$($1 \le n \le 100$),表示字符串 $t$ 的长度。
输入的第二行包含字符串 $t$,长度为 $n$,且仅由小写拉丁字母组成。
输出格式
输出一个字符串 $s$,使得按照上述算法加密后得到 $t$。
说明/提示
第一个样例已在题目描述中给出。
由 ChatGPT 4.1 翻译