记录编号 |
572633 |
评测结果 |
AAAAAAA |
题目名称 |
字符串周期(Period) |
最终得分 |
100 |
用户昵称 |
yrtiop |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.021 s |
提交时间 |
2022-07-04 00:16:32 |
内存使用 |
1.50 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n,Next[maxn];
char s[maxn];
int main() {
freopen("strperiod.in","r",stdin);
freopen("strperiod.out","w",stdout);
scanf("%d %s",&n,s + 1);
Next[1] = 0;
for(int i = 2,j = 0;i <= n;++ i) {
for(;j&&s[i] != s[j + 1];j = Next[j]);
if(s[i] == s[j + 1])++ j;
Next[i] = j;
}
for(int i = 2;i <= n;++ i) {
if(i % (i - Next[i]) == 0&&Next[i]) {
printf("%d %d\n",i,i / (i - Next[i]));
}
}
fclose(stdin);
fclose(stdout);
return 0;
}