📄 pku2406.cpp
字号:
//////POJ2406 Power Strings
////KMP
#include <stdio.h>
#include <string.h>
const int MAX = 1000000+10;
char line[MAX];
int n, nextval[MAX];
int main() {
// freopen("10298.in", "r", stdin);
// freopen("10298.out", "w", stdout);
while (scanf("%s",line) && strcmp(line, ".")) {
n = strlen(line);
memmove(line + 1, line, n);
int i, pos;
pos = nextval[1] = 0;
for (i = 2; i <= n; i++) {
while (pos && line[pos + 1] != line[i])
pos = nextval[pos];
if (line[pos + 1] == line[i]) pos++;
nextval[i] = pos;
}
int sub = n - nextval[n], ans;
if (n % sub == 0) ans = n / sub;
else ans = 1;
printf("%d\n", ans);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -