POJ 2406 - Power String

原创 2016年08月30日 15:55:57

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


题意:给出一个周期字符串,求出其中子字符串循环的次数。

把第一个子字符串作为模式,求出长度,再进行计算即可。

#include <cstdio>
#include <cstring>

char str[1000005];
int tar[1000005];

int main()
{
    while (scanf("%s", str) != EOF)
    {
        if (strcmp(str, ".") == 0)
            break;
        int len = strlen(str);
        tar[0] = 0;

        int cur = -1;
        for (int i = 1; i < len; ++i)
        {
            while (cur > 0 && str[cur+1] != str[i])
                cur = -1;
            if (str[cur+1] == str[i])
                cur++;
            tar[i] = cur;
        }
        if (len % (len - tar[len - 1] -1) == 0)
            printf("%d\n", len / (len - tar[len - 1] - 1));
        else
            printf("1\n");
    }
    return 0;
}


版权声明:Designed by Sureina 2016©Copyright.All Right Reserved

Power String poj2406(后缀数组+DC3算法)

这题其实应该不是用后缀数组做的。。。但是就当做练习吧。 倍增算法在这里会被卡掉,所以要用DC3算法。。这里我是套模板的。。重点就在于,怎么找这个循环节。 做法是把height数组出来之后,枚举一下...

poj2406Power string

poj上不去,在百炼上搜的,都是同一道题,只是百炼上是中文,以后要多在百炼刷题了。 描述 给定两个字符串a和b,我们定义a*b为他们的连接。例如,如果a=”abc” 而b=”def”,...
  • z8110
  • z8110
  • 2015年08月07日 16:35
  • 649

(KMP算法)Power String(P2406)

其实就是用一个int数组记录其中一个循环中的循环个数, // KMP算法 #include #include #include #include #include #include u...

POJ 2406 Power Strings(后缀数组[连续重复子串])

POJ 2406 Power Strings(后缀数组[连续重复子串])

POJ 2406 Power Strings

题目大意: 注释代码: 无注释代码: 单词解释:

[KMP][后缀数组] poj2406 Power Strings

DescriptionGiven two strings a and b we define a*b to be their concatenation. For example, if a = “a...

[POJ 2406] Power Strings (kmp循环节)

链接POJ 2406题意给出一个字符串,输出其最短循环节长度。题解首先说一下循环节,其实每个字符串都是有循环节的,最长的循环节就是它本身。 如果一个字符串s可以写成某个字符串d复制k次得到的,那么d...

poj2406--Power Strings+KMP求周期

先把结论摆出来:对于长为j的字符串str[1..j],next[j]=k,则令d=j-k;如果j%d==0,则这个字符串是一个 周期串,前d个字符是其最小的循环结,共包含j/d个循环节。 现在来解...
  • acm_lkl
  • acm_lkl
  • 2015年02月07日 15:49
  • 444

POJ -2406 Power Strings(循环节,kmp专题)

A - Power Strings Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Sub...

Power Strings (poj 2406 KMP)

Language: Default Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2406 - Power String
举报原因:
原因补充:

(最多只允许输入30个字)