Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
45843 | lgh | 【模拟赛3】罪恶的PQA | C++ | 通过 | 100 | 0 MS | 408 KB | 433 | 2022-02-24 22:10:29 |
#include <bits/stdc++.h> using namespace std; const int MAXN=1000010; int n,m,Next[MAXN]; char s[MAXN],t[MAXN]; void Init(int m) { Next[1]=0; for(int i=2,j=0; i<=m; i++) { while(j>0&& t[i]!=t[j+1]) j=Next[j]; if(t[i]==t[j+1]) j++; Next[i]=j; } } int main() { while(~scanf("%s",t+1)&&t[1]!='.') { m=strlen(t+1); Init(m); cout<<m/(m-Next[m]); puts(""); } return 0; }