zoukankan      html  css  js  c++  java
  • poj 2406

    http://poj.org/problem?id=2406

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions:66981   Accepted: 27644

    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

    abcd
    aaaa
    ababab
    .
    

    Sample Output

    1
    4
    3
    

    Hint

    This problem has huge input, use scanf instead of cin to avoid time limit exceed.
    #include<cstdio>
    #include<cstring>
    const int maxn=1e7+3;
    int len;
    int next[maxn];
    char str[maxn];
    void getnext(){
        int k=-1;
        int j=0;
        next[0]=-1;
        while(j<len){
            if(k==-1||str[j]==str[k]){
                k++;
                j++;
                next[j]=k;
            }else{
                k=next[k];
            }
        }
        return;
    }
    int main(){
        while(scanf("%s",str)&&str[0]!='.'){
            len=strlen(str);
            getnext();
             int tmp=len-next[len];
            if(len%tmp!=0){
                printf("1
    ");
            }else{
                printf("%d
    ",len/tmp);
            }
        }
        return 0;
    }
     
  • 相关阅读:
    ZOJ4125 Sekiro
    ZOJ4118 Stones in the Bucket
    ZOJ4115 Wandering Robot
    ZOJ4113 Calandar
    【递归】N皇后问题 和 2n皇后问题 dfs
    7-18
    7_13
    二维前缀和
    64位整数乘法
    【分治】魔法石的诱惑
  • 原文地址:https://www.cnblogs.com/qqshiacm/p/11443798.html
Copyright © 2011-2022 走看看