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 翻译