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 }