A string  can be encrypted(加密) by the following algorithm:

  • iterate(迭代) over all divisors(除数) of 1),
  • for each divisor d).

For example, the above algorithm applied to the string d=1).

You are given the encrypted string  always exists and is unique.

Input

The first line of input consists of a single integer n, and it consists only of lowercase Latin letters.

Output

Print a string t.

Examples

Input
10 
rocesfedoc
Output
codeforces
Input
16 
plmaetwoxesisiht
Output
thisisexampletwo
Input
1 z
Output
z

Note

The first example is described in the problem statement.

 

题目意思:对所给的字符串进行加密得到一新的字符串,加密方式是从n的最小因子开始,反转从开始到因子的字符串。

之前做这道题的时候理解错意思了,一直以为是一半一半的反转字符串,很是可惜,没有做出来

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
    int n,i;
    char s[110];
    scanf("%d",&n);
    getchar();
    scanf("%s",&s);
    for(i=1;i<=n;i++)
    {
        if(n%i==0)
        {
            reverse(s,s+i);
        }
    }
    printf("%s\n",s);
    return 0;
}

 这里有我之前一篇关于字符串反转函数的博客

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n,i,j,count;
 8     char s[110];
 9     int a[110];
10     scanf("%d",&n);
11     getchar();
12     scanf("%s",&s);
13     count=0;
14     for(i=1;i<=n;i++)
15     {
16         if(n%i==0)
17         {
18             a[count++]=i;///记录n因子
19         }
20     }
21     for(i=0;i<count;i++)
22     {
23         for(j=0;j<a[i]/2;j++)
24         {
25             swap(s[j],s[a[i]-j-1]);
26         }
27     }
28     printf("%s\n",s);
29     return 0;
30 }

 

相关文章: