原题链接传送门
题意:给一个长度为n的字符串。然后求出n的各个因子。按因子从小到大的顺序,字符串从头颠倒到因子大小的位置。
如长度为10的串“rocesfedoc”;
10的因子有1,2,5,10;
那么就是这样颠倒的。
“ rocesfedoc ” →“ rocesfedoc ” →“ orcesfedoc ”→ “ secrofedoc ”→ “ codeforces ”
1 2 5 10
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int n;
char a[105];
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++){
scanf("%c",&a[i]);
}
for(int i=2;i<=n/2;i++){
if(n % i == 0){
reverse(a,a+i);
}
}
reverse(a,a+n);
for(int i=0;i<n;i++){
printf("%c",a[i]);
}
return 0;
}
本文介绍了一种基于字符串因子的特殊反转算法。通过计算字符串长度的因子,按因子大小进行部分字符串的反转操作,最终实现整个字符串的逆序排列。示例代码展示了如何使用C++实现这一算法。

被折叠的 条评论
为什么被折叠?



