关于KMP的最短循环节、循环周期,请戳:

http://www.cnblogs.com/chenxiwenruo/p/3546457.html (KMP模板,最小循环节)

POJ 2406  Power Strings

题意:
给一个字符串,问这个字符串是否能由另一个字符串重复R次得到,求R的最大值。

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. /*
  5. 题意:
  6. 给一个字符串,问这个字符串是否能由另一个字符串重复R次得到,求R的最大值。
  7. */
  8. using namespace std;
  9. const int maxn=;
  10. int next[maxn];
  11. char str[maxn];
  12. void getnext(char *str,int len){
  13. next[]=-;
  14. int i=,j=-;
  15. while(i<len){
  16. if(j==-||str[i]==str[j]){
  17. i++;
  18. j++;
  19. next[i]=j;
  20. }
  21. else
  22. j=next[j];
  23. }
  24. }
  25. int main()
  26. {
  27. while(scanf("%s",str)!=EOF){
  28. if(str[]=='.')
  29. break;
  30. int len=strlen(str);
  31. getnext(str,len);
  32. int l=len-next[len];
  33. if(len%l==)
  34. printf("%d\n",len/l);
  35. else
  36. printf("1\n");
  37. }
  38. return ;
  39. }

POJ 1961  Period

给你一个字符串,对于它长度为i的前缀(i=2~n),给出对应的循环周期k,即前缀可由某个字符串拼接k次得到(k>1)
2406的加强版

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. /*
  5. 给你一个字符串,对于它长度为i的前缀(i=2~n),给出对应的循环周期k,即前缀可由某个字符串拼接k次得到(k>1)
  6. 2406的加强版
  7. */
  8. using namespace std;
  9. const int maxn=;
  10. int next[maxn];
  11. char str[maxn];
  12. int n;
  13. void getnext(char*str,int len){
  14. next[]=-;
  15. int i=,j=-;
  16. while(i<len){
  17. if(j==-||str[i]==str[j]){
  18. i++;j++;
  19. next[i]=j;
  20. }
  21. else
  22. j=next[j];
  23. }
  24. }
  25. int main()
  26. {
  27. int cases=;
  28. while(scanf("%d",&n),n){
  29. scanf("%s",str);
  30. getnext(str,n);
  31. printf("Test case #%d\n",++cases);
  32. for(int i=;i<=n;i++){
  33. int l=i-next[i];
  34. if(i%l== && i/l>){
  35. printf("%d %d\n",i,i/l);
  36. }
  37. }
  38. printf("\n");
  39. }
  40. return ;
  41. }

POJ 1961 2406 (KMP,最小循环节,循环周期)的更多相关文章

  1. POJ 2185 Milking Grid(KMP最小循环节)

    http://poj.org/problem?id=2185 题意: 给出一个r行c列的字符矩阵,求最小的覆盖矩阵可以将原矩阵覆盖,覆盖矩阵不必全用完. 思路: 我对于字符串的最小循环节是这么理解的: ...

  2. [poj 2185] Milking Grid 解题报告(KMP+最小循环节)

    题目链接:http://poj.org/problem?id=2185 题目: Description Every morning when they are milked, the Farmer J ...

  3. Cyclic Nacklace hdu3746 kmp 最小循环节

    题意:给出一段字符串  求最少在最右边补上多少个字符使得形成循环串(单个字符不是循环串) 自己乱搞居然搞出来了... 想法是:  如果nex[len]为0  那么答案显然是补len 否则  答案为循环 ...

  4. HDU1358 Period —— KMP 最小循环节

    题目链接:https://vjudge.net/problem/HDU-1358 Period Time Limit: 2000/1000 MS (Java/Others)    Memory Lim ...

  5. Common Divisors CodeForces - 182D || kmp最小循环节

    Common Divisors CodeForces - 182D 思路:用kmp求next数组的方法求出两个字符串的最小循环节长度(http://blog.csdn.net/acraz/articl ...

  6. UVAlive 3026 KMP 最小循环节

    KMP算法: 一:next数组:next[i]就是前面长度为i的字符串前缀和后缀相等的最大长度,也即索引为i的字符失配时的前缀函数. 二:KMP模板 /* pku3461(Oulipo), hdu17 ...

  7. HDU - 4333 Revolving Digits(拓展kmp+最小循环节)

    1.给一个数字字符串s,可以把它的最后一个字符放到最前面变为另一个数字,直到又变为原来的s.求这个过程中比原来的数字小的.相等的.大的数字各有多少. 例如:字符串123,变换过程:123 -> ...

  8. 【KMP+最小循环节】F. Cyclic Nacklace

    https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/F [题意] 给定一个字符串,问在字符串后最少添加多少个字母,得到的新字符串能是前 ...

  9. hdu3746(kmp最小循环节)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 题意:问在一个字符串末尾加上多少个字符能使得这的字符串首尾相连后能够循环 题解:就是利用next ...

  10. HDU 6740 kmp最小循环节

    题意:给一个无线循环小数的前几位,给n,m 选择其中一种出现在前几位的循环节方式(a个数),循环节的长度b 使得n*a-m*b最大 样例: 2 1 12.1212 输出 6 选择2,2*1-1*1=1 ...

随机推荐

  1. C 实现一个跨平台的定时器 论述

    引言 今天我们要讲述和构建的是一个跨平台多线程C的定时器对象,粒度是毫秒级别.可以称之为简易的timer, sctimer.h 库. 首先看总的接口,看门见客. sctimer.h #ifndef _ ...

  2. Virtual Box + CentOS Minimal + Apache搭建Web服务器

    本文并不介绍关于Virtual Box, CentOS, Apache的安装, 主要针对安装后相关的配置, 使宿主机(Host)可以访问客户机(Guest: CentOS in Virtual Box ...

  3. QTP获取系统时间并自定义格式

    function GetDateTime(Nowstr)          Dim Currentdatetime           Dim YY   'Year          Dim MM   ...

  4. 2天驾驭DIV+CSS (基础篇)(转)

    这是去年看到的一片文章,感觉在我的学习中,有不少的影响.于是把它分享给想很快了解css的兄弟们. 基础篇[知识一] “DIV+CSS” 的叫法是不准确的[知识二] “DIV+CSS” 将你引入两大误区 ...

  5. Objective-C 编码规范

    Objective-C 编码规范,内容来自苹果.谷歌的文档翻译,自己的编码经验和对其它资料的总结. 概要 Objective-C 是一门面向对象的动态编程语言,主要用于编写 iOS 和 Mac 应用程 ...

  6. Ubuntu 12.04 Desktop使用XAMPP

    Ubuntu 12.04 Desktop安装XAMPP Ubuntu 12.04 Desktop配置XAMPP Ubuntu 12.04 Desktop使用XAMPP 1/打开GUI界面的管理工具 终 ...

  7. objective-c自学总结(三)---面向对象的封装,继承与多态

    面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...

  8. Android Paint的使用以及方法介绍(附源码下载)

    要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: se ...

  9. public、protect、private在父类子类中使用

    先贴出一张,直观的.估计大家都见过的关于public.protect.private的范围图 作用域 当前类 同一package 子孙类 其他package public     T         ...

  10. Socket 一对多通信

    服务器(TCPServer.java): package visec; import java.net.*; import java.io.*; public class TCPServer{ pub ...