Uvalive - 3026 Period (kmp求字符串的最小循环节+最大重复次数)
2024-09-02 14:08:18
参考: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 ;
}
最新文章
- UIMenuItem
- 学习Linux入门50个基本命令
- java实现的kmp算法
- hdu 3917 最大重量封闭图
- 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
- Java经典编程题50道之三十九
- boost::bad_weak_ptr的原因
- Python中导入第三方声源库Acoular的逻辑解释以及Acoular的下载
- 关于Linux和Unix的分析
- Core文件简单介绍及生成设置方法
- selenium跳过webdriver检测并爬取天猫商品数据
- 如何在linux环境安装数据库
- [LeetCode] Group Anagrams 群组错位词
- Centos6.8 搭建Tomcat服务器
- C/C#双色球
- Linux命令之lsof
- pandas 合并数据
- c语言数据类型、运算符和表达式
- Java动态代理探讨
- apache +PHP多版本 切换的问题