POJ 2406 Power Strings (KMP)

来源:互联网 发布:trello mac 编辑:程序博客网 时间:2024/05/29 03:20

Power Strings
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 37668 Accepted: 15580

Description

Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal way: a^0 = "" (the empty string) and a^(n+1) = a*(a^n).

Input

Each test case is a line of input representing s, a string of printable characters. The length of s will be at least 1 and will not exceed 1 million characters. A line containing a period follows the last test case.

Output

For each s you should print the largest n such that s = a^n for some string a.

Sample Input

abcdaaaaababab.

Sample Output

143

Hint

This problem has huge input, use scanf instead of cin to avoid time limit exceed.

注-此题为:POJ 2406 Power Strings

说明:    KMP 模板

已AC代码:

#include<cstdio>#include<cstring>#define M 1000010int p[M];char ch[M];int len;void getp()   //kmp模板 {int i,j;i=0;j=-1;p[i]=j;while(i<len){if(j == -1 || ch[i] == ch[j]){i++,j++;p[i]=j;}elsej=p[j];}}int main(){int cnt;while(scanf("%s",ch)){if(strcmp(ch,".")==0)break;len=strlen(ch);getp();if(len%(len-p[len])==0)printf("%d\n",len/(len-p[len])); elseprintf("1\n");}return 0;}

0 0
原创粉丝点击