kmp简单应用,一开始理解错误了3A。
ACcode:
#include<stdio.h>
#include<string.h>
#include<iostream>
const int MAXN=1100000;
char s[MAXN];
int len,next[MAXN];
int get_next(char* T)
{
int i=0,j=-1;
next[0]=-1,len=strlen(T);
while(i<len)
{
if(j==-1||T[i]==T[j])
{
++i,++j;
next[i]=j;
}
else j=next[j];
}
return i%(i-next[i])==0?i/(i-next[i]):1;
}
int main()
{
while (scanf("%s",s)!=EOF)
{
if (s[0]=='.') break;
printf("%d\n",get_next(s));
}
return 0;
}