zoukankan      html  css  js  c++  java
  • POJ 2406:Power Strings

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 41252   Accepted: 17152

    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.

    题意:

    给出的一个字符串某个字串链接N次得出的,求最大N;


    思想:

    KMP匹配算法之next[];模式串结尾指针回溯最小移动次数即最小字串长度,N=s.length%(s.length-next[s.length]);


    #include <stdio.h>
    #include <string.h>
    char s[1000005];
    int num[1000005];
    int main()
    {
        while(scanf("%s",s),s[0]!='.')
        {
            int j=-1;
            num[0]=-1;
            int n=strlen(s);
            for(int i=0; i<n;)
            {
                if(j==-1||s[i]==s[j])num[++i]=++j;
                else j=num[j];
            }
            if(n%(n-num[n])==0)
                printf("%d
    ",n/(n-num[n]));
            else printf("1
    ");
        }
        return 0;
    }
    


  • 相关阅读:
    好文推荐
    高效词频分析
    内网渗透技巧:判断机器真实外网IP的5种方法总结
    禁用substr、substring、mid函数的sql注入脚本
    内网文件传输
    工作
    我是如何逃过所有杀软进行内网端口转发的
    扎克伯格开发的家用AI: Jarvis
    Python初学者之网络爬虫(二)
    Python初学者之网络爬虫
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989371.html
Copyright © 2011-2022 走看看