zoukankan      html  css  js  c++  java
  • POJ2406(next原理理解)

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 40448   Accepted: 16828

    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
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int MAXN=1000005;
    char s[MAXN];
    int len;
    int next[MAXN];
    void getnext()
    {
        int i=0,k=-1;
        next[0]=-1;
        while(i<len)
        {
            if(k==-1||s[i]==s[k])
            {
                i++;
                k++;
                next[i]=k;
            }
            else    k=next[k];
        }
    }
    int main()
    {
        while(gets(s)&&*s!='.')
        {
            len=strlen(s);
            getnext();
            int ans=1;
            if(len%(len-next[len])==0)    ans=len/(len-next[len]);
            printf("%d
    ",ans);
        }
        
        return 0;
    }
  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5203745.html
Copyright © 2011-2022 走看看