http://poj.org/problem?id=2406

就是给一个串,求其循环节的个数。

稍微想一下就知道,KMP中nxt数组记录了所有可与前面匹配的位置。

那么如果我们的循环节长度为k,有n个,那么我们最后一个nxt显然就会是k*(n-1)。

倒推即可。

#include<cstdio>
#include<cstring>
using namespace std;
char s2[];
int nxt[]={};
void getnext(int m){
int j=;
for(int i=;i<=m;i++){
while(j!=&&s2[j+]!=s2[i])j=nxt[j];
if(s2[j+]==s2[i])j++;
nxt[i]=j;
}
return;
}
int main(){
while(scanf("%s",s2+)!=EOF){
if(s2[]=='.')break;
memset(nxt,,sizeof(nxt));
int m=strlen(s2+);
getnext(m);
int ans=;
if(m%(m-nxt[m])==){
ans=m/(m-nxt[m]);
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. MSSQL FOR MXL PATH 运用(转载)
  2. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
  3. 怎样让你的代码更好的被JVM JIT Inlining
  4. (原)Struts 相关资源下载
  5. 读书笔记之 - javascript 设计模式 - 工厂模式
  6. Notepad++强大的代码补全和代码提示功能的方法
  7. c#扩展方法的使用,实现的几个功能
  8. Azure CosmosDB (5) 高可用性
  9. vue的事件处理梳理
  10. Tools - 正版Windows7系统的下载与安装
  11. Python自制微信机器人:群发消息、自动接收好友
  12. ASP.NET WebForm 检测页面刷新(Refresh)
  13. PHP获取文件后缀名
  14. Effective Java 第三版——53. 明智而审慎地使用可变参数
  15. SAP 数据类型
  16. MT【176】两两乘积
  17. 模拟界面请求到web服务器
  18. Jquery API学习笔记
  19. Java移位运算符 “
  20. springboot-vue-JWT使用

热门文章

  1. CentOS6.5进不去系统,修复
  2. WEB中间件漏洞--IIS
  3. lintcode112 删除排序链表中的重复元素
  4. Redis命令续
  5. 论文阅读之Joint cell segmentation and tracking using cell proposals
  6. LeetCode 145 ——二叉树的后序遍历
  7. MATLAB画图符号标注
  8. javascript打开新窗口
  9. HDU 2491 Priest John&#39;s Busiest Day(贪心)(2008 Asia Regional Beijing)
  10. Java学习个人备忘录之抽象类