Power Strings

Problem 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.

Example Input

abcd
aaaa
ababab
.

Example Output

1
4
3

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

Author

#include
#include 
#define N 1010000
char p[N];
int main()
{
    while(gets(p))
    {
        int b=strlen(p);
        if(b==1&&p[0]=='.')break;
        int max=1;
        int c;
        for(int a=1; a<=b/2;a++)
        {
            if(b%a!=0)continue;
            int d;
            for(c=0, d=0; cif(d==a)d=0;
                if(p[d]!=p[c])break;
            }
            if(c==b)
            {
                max=b/a;
                break;
            }
        }
        printf("%d\n", max);
    }
    return 0;
}

你可能感兴趣的:(串,数组(KMP))