CodeForces - 999B Reversing Encryption

2023-03-09 16:06:41 浏览数 (1)

B - Reversing Encryption

A string  of length  can be encrypted by the following algorithm:

  • iterate over all divisors of  in decreasing order (i.e. from  to ),
  • for each divisor , reverse the substring  (i.e. the substring which starts at position  and ends at position ).

For example, the above algorithm applied to the string ="codeforces" leads to the following changes: "codeforces"  "secrofedoc"  "orcesfedoc"  "rocesfedoc" "rocesfedoc" (obviously, the last reverse operation doesn't change the string because ).

You are given the encrypted string . Your task is to decrypt this string, i.e., to find a string  such that the above algorithm results in string . It can be proven that this string  always exists and is unique.

Input

The first line of input consists of a single integer  () — the length of the string . The second line of input consists of the string . The length of is , and it consists only of lowercase Latin letters.

Output

Print a string  such that the above algorithm results in .

Examples

Input

代码语言:javascript复制
10
rocesfedoc

Output

代码语言:javascript复制
codeforces

Input

代码语言:javascript复制
16
plmaetwoxesisiht

Output

代码语言:javascript复制
thisisexampletwo

Input

代码语言:javascript复制
1
z

Output

代码语言:javascript复制
z

Note

The first example is described in the problem statement.

        题目的意思就是例子里面写的那样,已知这个字符串的长度为n,如果一个数d为它的因子,那么从1到d都要逆序(字符串从1开始计数),将所有的因子求出,依次进行逆序就可以了,但是要注意的是,这里是从最小的因子开始逆序。

代码语言:javascript复制
#include <bits/stdc  .h>

using namespace std;

char s[105];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        getchar();
        scanf("%s",s);
        for(int i = 1; i < n ; i   )
        {
            if(n % i == 0)
            {
                for(int j = 0; j < i / 2; j   )
                {
                    char op = s[j];
                    s[j] = s[i - j - 1];
                    s[i-j -1 ] = op;
                }
            }
        }
        for(int i = 0; i <=(n -1)/2; i   )
        {
            char op = s[i];
            s[i] = s[n - i - 1];
            s[n - i - 1] = op;
        }
        printf("%s",s);
        printf("n");
    }
    return 0;
}

0 人点赞