题目链接:
http://poj.org/problem?id=2406
给你一个字符串,让你求它可以表示成最多几个字符串的重复,求循环节裸题
不能整除就为1,能整除就是len/t;
#include <stdio.h>
#include<cstring>
using namespace std;
char b[1000100];
int nxt[1000100];
int lb;
void gnx(){
int i=0,j=-1;
nxt[0]=-1;
while(i<lb){
if(j==-1||b[i]==b[j])nxt[++i]=++j;
else j=nxt[j];
}
}
int main(void)
{
while(~scanf("%s",b)){
if(b[0]=='.')break;
lb=strlen(b);
gnx();
int t=lb-nxt[lb];
printf("%d\n",lb%t?1:lb/t);
}
return 0;
}