Power Strings
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 23735 | Accepted: 9978 |
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.
Source
题意:给出一个字符串S,求该字符串最多是由相同重复字串连接而成的 若S由n个A组成,则称 S = A^n,求最大的n
如 S=aaa,S="a"^3 => n = 3; S=ababa => n = 1 S=ababab=>"ab"^3=>n=3
code:
1 #include2 #include 3 using namespace std; 4 5 int Next[1000010]; 6 char str[1000010]; 7 int len; 8 9 void getnext()10 {11 int j=0;12 int k=-1;13 Next[0]=-1;14 while(j