题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358

题目大意:给你一串字符串,判断字符串的前缀是否由某些字符串多次重复而构成。

也就是,从第1个字母到第2字母组成的字符串可由某一周期性的字串(“a”)

的两次组成,也就是aa有两个a组成;

第三行自然就是aabaab可有两个aab组成;

第四行aabaabaab可由三个aab组成;

第五行aabaabaabaab可由四个aab组成。

解题思路:同HDU 3746类似,通过计算字符串前缀的循环节获得相应周期即可。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+; int m;
int nxt[N];
char p[N]; void getnext(){
int i,j;
i=,j=nxt[]=-;
while(i<m){
while(j!=-&&p[i]!=p[j])
j=nxt[j];
nxt[++i]=++j;
}
} int main(){
int cas=;
while(scanf("%d",&m)&&m){
scanf("%s",p);
getnext();
printf("Test case #%d\n",++cas);
//枚举长度为2~m的字符串前缀
for(int i=;i<=m;i++){
int mmin=i-nxt[i]; //len-nxt[len]为最小循环节
if(i!=mmin&&i%mmin==)
printf("%d %d\n",i,i/mmin);
}
printf("\n");
}
return ;
}

最新文章

  1. Gevent中的同步与异步详解
  2. Eclipse 关于“The type * is not accessible due to restriction on required library”问题的解决办法
  3. start with connect by prior 递归查询用法
  4. Entity Framework: Joining in memory data with DbSet
  5. 【Spring五】AOP之使用注解配置
  6. ORACLE 11G EXP导出空表方法
  7. Android解决异常apk on device &#39;0292bea1&#39;: Unable to open sync connection!
  8. javascript 复制数组
  9. js模块化世界
  10. MyEclipse2017 隐藏回车换行符
  11. Testing - 软件测试知识梳理 - 探索性测试
  12. Linux设备驱动剖析之IIC(三)
  13. bzoj 2553 [BeiJing2011]禁忌——AC自动机+概率DP+矩阵
  14. Java中IO的简单举例
  15. 【文文殿下】 [SDOI2016]生成魔咒
  16. Shell笔记-04
  17. 1.6 JAVA高并发之线程池
  18. idea 出现 java.noSuchMechodFound
  19. Java 之多线程通信(等待/唤醒)
  20. Object.prototype.hasOwnProperty()

热门文章

  1. git用户名和邮箱配置
  2. 解题:POI 2015 Pieczęć
  3. 【分块】【P2801】教主的魔法
  4. Codeforces Round #286 (Div. 2) B 并查集
  5. 中南多校对抗赛 第三场 B
  6. python学习笔记(五) 200行实现2048小游戏
  7. Redis 为什么用跳表而不用平衡树
  8. 阿里云对象存储OSS使用 HTTPS
  9. Python基础之面向对象(初级篇)
  10. java 关于值引用、地址引用的问题