zoukankan      html  css  js  c++  java
  • POJ2406(SummerTrainingDay10-I KMP)

    Power Strings

    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 50036   Accepted: 20858

    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找不可重叠的最小循环节
     1 //2017-08-10
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 const int N = 1000010;
    10 char str[N];
    11 int nex[N];
    12 
    13 void getNext(int n)
    14 {
    15     nex[0] = -1;
    16     for(int i = 0, fail = -1; i < n;)
    17     {
    18         if(fail==-1||str[i]==str[fail])
    19         {
    20             i++, fail++;
    21             nex[i] = fail;
    22         }else fail = nex[fail];
    23     }
    24 }
    25 
    26 int main()
    27 {
    28     while(scanf("%s", str)!=EOF)
    29     {
    30         if(str[0] == '.')break;
    31         int n = strlen(str);
    32         getNext(n);
    33         int ans = n-nex[n];
    34         if(n%ans == 0)
    35             printf("%d
    ", n/ans);
    36         else printf("1
    ");
    37     }
    38 
    39     return 0;
    40 }
  • 相关阅读:
    前端html+css标签简介(可能就我自己看的懂-。-)
    python-day43(正式学习)
    python-day42(正式学习)
    python-day40(正式学习)
    python-day39(正式学习)
    python-day38(正式学习)
    python-day37(正式学习)
    python-day31(正式学习)
    python-day30(正式学习)
    python-day29(正式学习)
  • 原文地址:https://www.cnblogs.com/Penn000/p/7341668.html
Copyright © 2011-2022 走看看