• POJ 2406 Power Strings(KMP next[]函数)


    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 23112   Accepted: 9691

    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.

    Source

     
     
     
    简单的KMP题目:
     
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    
    const int MAXN=1000000;
    char str[MAXN];
    int next[MAXN];
    int len;
    void getNext()
    {
        int j,k;
        j=0;
        k=-1;
        next[0]=-1;
        while(j<len)
        {
            if(k==-1||str[j]==str[k])
               next[++j]=++k;
            else k=next[k];
        }
    }
    int main()
    {
       // freopen("in.txt","r",stdin);
       // freopen("out.txt","w",stdout);
        while(scanf("%s",&str)!=EOF)
        {
            if(strcmp(str,".")==0) break;//这个地方要注意
            len=strlen(str);
            getNext();
            if(len%(len-next[len])==0&&len/(len-next[len])>1)printf("%d\n",len/(len-next[len]));
            else printf("1\n");
        }
        return 0;
    }
  • 相关阅读:
    73. Set Matrix Zeroes
    289. Game of Live
    212. Word Search II
    79. Word Search
    142. Linked List Cycle II
    141. Linked List Cycle
    287. Find the Duplicate Number
    260. Single Number III
    137. Single Number II
    Oracle EBS中有关Form的触发器的执行顺序
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2625811.html
Copyright © 2020-2023  润新知