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

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 64676   Accepted: 26679

    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……照着书打的qwq

    #include <stdio.h>
    #include <algorithm>
    #include <iostream>
    #include <string.h>
    using namespace std;
    #define maxn 2000100
    char s[maxn];
    int nexts[maxn];
    int n,m;
    void getnexts()
    {
        int j=0;
        int k=-1;
        nexts[0]=-1;
        while(j<m)
        {
            if(k==-1||s[j]==s[k])
            {
                j++;k++;
                nexts[j]=k;
            }
            else k=nexts[k];
        }
    }
    int main()
    {
        while(~scanf("%s",s))
        {
            if(s[0]=='.')break;
            m=strlen(s);
            getnexts();
            int n=m-nexts[m];
            if(n!=m&&m%n==0)
                printf("%d
    ",m/n);
            else
                printf("1
    ");
        }
        return 0;
    }
  • 相关阅读:
    opengl打开本地bmp图片绘制
    jsp连接mysql数据库
    opengl雾开启
    opengl多重采样
    抗锯齿说
    opengl混合效果
    android实现视频图片取缩略图
    opengl Test
    动态规划算法(@背包问题)
    百钱买百鸡的问题(递归解法)
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11149637.html
Copyright © 2011-2022 走看看