给一个字符串。求这个串的最小的循环节的长度。

好像。num = len/(len-next[len]) 就是循环节的长度。如果 len%(len-next[len]) ==0 就是 说字符串长度刚好是循环节长度的整数倍。不然的话。说明没有最小循环节。

证明嘛。这里好像还是蛮靠谱的。http://blog.csdn.net/euler_m/article/details/6281903

但是。。还是没有看懂。。~~~~(>_<)~~~~暂且记住吧,,

附代码;

 #include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; #define maxn 1000010 int next[maxn];
char str[maxn];
int ans[maxn]; void getNext(char str[]) {
int len=strlen(str+);
next[] = ;
for (int k=, q=; q<=len; ++q) {
while(k> && str[k+] != str[q])
k=next[k];
if (str[k+] == str[q])
k++;
next[q] = k;
}
} int main()
{
while(scanf("%s",str+)!= EOF)
{
if (str[] == '.') break;
int len = strlen(str+);
getNext(str);
int flag = len % (len - next[len]);
if (flag != ) printf("1\n");
else {
int num = len / (len - next[len]);
printf("%d\n", num);
}
}
return ;
}

POJ 2406 KMP 循环节的更多相关文章

  1. poj 2406 Power Strings(kmp循环节)

    题目链接:http://poj.org/problem?id=2406 题目大意:如果n%(n-next[n])==0,则存在重复连续子串,长度为n-next[n]. 例如:      a    b  ...

  2. 【POJ 2406】Power Strings(KMP循环节)

    终于靠着理解写出KMP了,两种KMP要代码中这种才能求循环节.i-next[i]就是循环节. #include<cstdio> #define N 1000005 char s[N]; i ...

  3. poj(2406) kmp

    题目链接:https://vjudge.net/problem/POJ-2406 kmp学习:https://blog.csdn.net/starstar1992/article/details/54 ...

  4. POJ1961Period(kmp+循环节)

    传送门 题目大意:输出字符串所有前缀的循环节个数,下标从1开始,i 和1-i循环节的个数 题解:网上摘得 KMP最小循环节.循环周期: 定理:假设S的长度为len,则S存在最小循环节,循环节的长度L为 ...

  5. BZOJ 1355: [Baltic2009]Radio Transmission [KMP 循环节]

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 792  Solved: 535 ...

  6. HDU-1358-Period(KMP, 循环节)

    链接: https://vjudge.net/problem/HDU-1358#author=0 题意: For each prefix of a given string S with N char ...

  7. POJ 2406 KMP/后缀数组

    题目链接:http://poj.org/problem?id=2406 题意:给定一个字符串,求由一个子串循环n次后可得到原串,输出n[即输出字符串的最大循环次数] 思路一:KMP求最小循环机,然后就 ...

  8. Power Strings (poj 2406 KMP)

    Language: Default Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 33205   ...

  9. POJ 2406 KMP next数组的应用

    题意:让你找最小重复串的个数 加深KMP中对next数组的理解 #include <cstdio> #include <cstring> using namespace std ...

随机推荐

  1. 20145331魏澍琛《网络对抗》Exp5 MSF基础应用

    20145331魏澍琛<网络对抗>Exp5 MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit:渗透攻击的模块合集,将真正 ...

  2. JQuery插件模板

    (function($){ $.fn.插件名 = function(settings){ var defaultSettings = { } /* 合并默认参数和用户自定义参数 */settings ...

  3. 通过例子来理解python闭包。

    闭包:就是内部函数对enclosing作用域的变量进行引用.(可先参考python函数作用域LEGB) 通过一个例子体会 def func_150(val): passline = 90 if val ...

  4. TeeChart的坐标轴

    TeeChart一共有六个坐标轴,一下是默认值 tChart1.Axes.Bottom.Visible = true;//横轴 tChart1.Axes.Left.Visible = true;//纵 ...

  5. html文件引用本地js文件出现跨域问题的解决方案

    在本地做个小demo,很简单,一个html文件,一个js文件,在html文件中通过<script>标签引入js,但是出现了一个意想不到的问题:浏览器报错—— 一番折腾后,终于弄明白了:加载 ...

  6. 解决 Ubuntu 14.04 图形界面无法正常显示 问题

    参考: ubuntu清除系统缓存的方法 apt-get(四) 每天一个linux命令(33):df 命令 Ubuntu server 12.10 /dev/sda1 disk full 解决 Ubun ...

  7. 【Coursera】SecondWeek(2)

    The First Two Packets on the Internet Leonard Kleinrock Kleinrock 是一名工程师和计算机科学家,他在APRANET网络中起到了至关重要的 ...

  8. 改变checkbox样式问题

    选择1   选择2 选择3 选择4 选择5 <form action=""> <label for="test">选择1 <inp ...

  9. 读jQuery源码有感2

    那么就来读读jQuery源码的Callbacks部分. 一上来看原版源码 jQuery.Callbacks = function( options ) { // Convert options fro ...

  10. shell wc命令 统计行数

    users文件内容 hello world 我们要统计 users 文件的行数,执行以下命令: $ wc -l users users 也可以将输入重定向到 users 文件: $ wc -l < ...