zoukankan      html  css  js  c++  java
  • POJ2406-Power Strings(kmp循环节)

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 31111   Accepted: 12982

    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
    题意:输出循环节最大的个数
    
    
    思路:next函数推断一下就可以:
    若n%(n-next[n])==0 ans = n/(n-next[n])
    否则 ans = 1
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <string>
    #include <algorithm>
    #include <queue>
    using namespace std;
    const int maxn = 1000000+10;
    int next[maxn];
    char str[maxn];
    int n;
    void getNext(){
        next[0] = next[1] = 0;
        for(int i = 1,j; i < n; i++){
            j = next[i];
            while(j && str[i] != str[j]) j = next[j];
            if(str[i]==str[j]) next[i+1] = j+1;
            else next[i+1] = 0;
        }
    }
    int main(){
    
        while(~scanf("%s",str) && strcmp(str,".")!=0){
            n = strlen(str);
            getNext();
            int ans;
            if(n%(n-next[n])!=0) ans = 1;
            else ans =  n/(n-next[n]);
            printf("%d
    ",ans);
        }
        return 0;
    }
    


  • 相关阅读:
    阅读笔记2
    阅读笔记1
    学习进度条
    第二阶段冲刺第七天站立会议
    第二阶段冲刺第六天站立会议
    第二阶段冲刺第五天站立会议
    阅读笔记4
    第二阶段冲刺第四天站立会议
    第一阶段意见评论
    第12周学习进度总结
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6776273.html
Copyright © 2011-2022 走看看