参考:http://www.cnblogs.com/jackge/archive/2013/01/05/2846006.html

总结一下,如果对于next数组中的 i, 符合 i % ( i - next[i] ) == 0 && next[i] != 0 , 则说明字符串循环,而且

循环节长度为:   i - next[i]

循环次数为:       i / ( i - next[i] )

 #include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#include <string>
#include <set>
#include <functional>
#include <numeric>
#include <sstream>
#include <stack>
#include <map>
#include <queue>
#pragma comment(linker, "/STACK:102400000,102400000")
#define CL(arr, val) memset(arr, val, sizeof(arr)) #define ll long long
#define inf 0x7f7f7f7f
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0) #define L(x) (x) << 1
#define R(x) (x) << 1 | 1
#define MID(l, r) (l + r) >> 1
#define Min(x, y) (x) < (y) ? (x) : (y)
#define Max(x, y) (x) < (y) ? (y) : (x)
#define E(x) (1 << (x))
#define iabs(x) (x) < 0 ? -(x) : (x)
#define OUT(x) printf("%I64d\n", x)
#define lowbit(x) (x)&(-x)
#define Read() freopen("a.txt", "r", stdin)
#define Write() freopen("b.txt", "w", stdout);
#define maxn 1000000000
#define N 2510
#define mod 1000000000
using namespace std; char a[];
int p[];
void next(int l)
{
int j=;
p[]=;
for(int i=;i<=l;i++)
{
while(j>&&(a[j+]!=a[i])) j=p[j];
if(a[j+]==a[i]) j+=;
p[i]=j;
}
}
int main()
{
//freopen("a.txt","r",stdin);
int n,j=;
while(~scanf("%d",&n))
{
if(n==) break;
printf("Test case #%d\n",j++);
scanf("%s",a+);
int l=strlen(a+);
next(l);
for(int i=;i<=l;i++)
{
if(i%(i-p[i])==&&p[i]!=)
{
printf("%d %d\n",i,i/(i-p[i]));
}
}
printf("\n");
}
return ;
}

最新文章

  1. UIMenuItem
  2. 学习Linux入门50个基本命令
  3. java实现的kmp算法
  4. hdu 3917 最大重量封闭图
  5. 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
  6. Java经典编程题50道之三十九
  7. boost::bad_weak_ptr的原因
  8. Python中导入第三方声源库Acoular的逻辑解释以及Acoular的下载
  9. 关于Linux和Unix的分析
  10. Core文件简单介绍及生成设置方法
  11. selenium跳过webdriver检测并爬取天猫商品数据
  12. 如何在linux环境安装数据库
  13. [LeetCode] Group Anagrams 群组错位词
  14. Centos6.8 搭建Tomcat服务器
  15. C/C#双色球
  16. Linux命令之lsof
  17. pandas 合并数据
  18. c语言数据类型、运算符和表达式
  19. Java动态代理探讨
  20. apache +PHP多版本 切换的问题

热门文章

  1. Android优化方案之--Fragment的懒加载实现
  2. iOS----时间日期处理
  3. HTML标签的分类
  4. xamarin 学习笔记01-环境配置
  5. 迅为电子iTOP-HMI043 4.3寸人机界面产品
  6. 说说C#中list与IList中的区别(转载)
  7. incremental linking(增量链接)的作用
  8. PageOffice NET MVC下使用
  9. pep8摘要
  10. UIWebView中javascript与Objective-C交互、获取摄像头