Period

时间限制: 3000ms内存限制: 65536kB
描述
For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. That is, for each i (2 <= i <= N) we want to know the largest K > 1 (if there is one) such that the prefix of S with length i can be written as AK ,that is A concatenated K times, for some string A. Of course, we also want to know the period K.
输入
The input consists of several test cases. Each test case consists of two lines. The first one contains N (2 <= N <= 1 000 000) – the size of the string S.The second line contains the string S. The input file ends with a line, having the
number zero on it.
输出
For each test case, output "Test case #" and the consecutive test case number on a single line; then, for each prefix with length i that has a period K > 1, output the prefix size i and the period K separated by a single space; the prefix sizes must be in increasing order. Print a blank line after each test case.
样例输入
3
aaa
12
aabaabaabaab
0
样例输出
Test case #1
2 2
3 3

Test case #2
2 2
6 2
9 3
12 4
参考代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {public static void main(String[] args) throws IOException {BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));int cases = 0;while(true){int n = Integer.parseInt(cin.readLine());if(0 == n)break;String str = " "+cin.readLine();int next[] = new int[n + 2];int i = 1,j = 0;next[1] = 0;while(i <= n){if(str.charAt(i) == str.charAt(j)||j == 0){i ++;j ++;next[i] = j;}else{j = next[j];}}System.out.println("Test case #"+ ++cases);for(int k=2;k<=n;k++){if(k%((k+1)-next[k+1])==0){int count=k /((k+1)-next[k+1]);if(count!=1)System.out.println(k+" "+count);}  }System.out.println();}}
}

作者:binfeihan 发表于2011-10-3 21:40:55 原文链接
阅读:32 评论:0 查看评论

转载于:https://www.cnblogs.com/chenlipp/archive/2011/10/03/2219712.html

Java程序练习-Period相关推荐

  1. 使用jmeter测试java程序

    最近在用jmeter进行性能测试,防止被忘记,把步骤写下. 场景:测试java程序 1.右击测试计划-> 添加 -> Threads(Users) -> 线程组 2.设置线程属性,用 ...

  2. Java在加载阶段会加载依赖吗,Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)...

    Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...

  3. linux如何运行java程序,Linux环境下运行简单java程序

    一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...

  4. prometheus监控java程序

    可参考链接,需找开发商量jmx端口暴露方式 https://www.jianshu.com/p/8a5e681b18ce 或者 http://www.mamicode.com/info-detail- ...

  5. 用java的输出姓名_用java程序输出自己的姓名

    代码部分: public class Hello { public static void main(String[] args) { System.out.println("$$$$$$$ ...

  6. 作为一名合格的JAVA程序员需要点亮那些技能树?

    转自:https://zhuanlan.zhihu.com/p/26035486 先看看这些程序员技能树,你掌握或了解哪些?OMG竟然有么多---震精!震精!!! 这是从450家企业的招聘信息中统计而 ...

  7. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  8. java负数右移_收入囊中篇---Java程序基础(二)

    前言: 本篇是接着上一篇更新的,如果没有阅读上一篇的话,可以查阅或回顾一下. 1.收入囊中篇---Java基础必备知识(一) 2.收入囊中篇---Java程序基础(二) Java程序基础目录 1.Ja ...

  9. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

最新文章

  1. python编程问题--第二次
  2. leetcode C++ 23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
  3. es6对象属性的遍历
  4. 2018-2019-1 20165226 《信息安全系统设计基础》第6周学习总结
  5. 电工助手App开发 第三周
  6. 第53课 化功大法 《小学生C++趣味编程》
  7. pandas使用字典格式修改columns列名
  8. php向浏览器输出,使PHP即时输出结果到浏览器
  9. 【数学建模】CUMCM-2010A 储油罐的变位识别与罐容表标定 解题思路整理
  10. 计算机英语用哪个软件,电脑学习英语的软件哪个好?
  11. FreeSSL.cn 申请免费HTTPS 证书
  12. 补码中关于-32768的问题
  13. 开热点给电脑消耗大吗_电脑连热点流量消耗大吗
  14. ERWIN中的一对多标识关系和一对多非标识关系
  15. Spring中添加自定义标签
  16. 云栖大会 mysql_2019云栖大会 数据库
  17. 类的组合在什么情况下使用_什么情况下选择使用圆锥滚子轴承?(原创轴承外贸写作素材)...
  18. 实现echarts图表响应式效果
  19. android crt证书,如何在android手机安装数字证书 crt和p12
  20. html弹窗中遍历数组,有关js各种数组遍历

热门文章

  1. C++类成员的初始化顺序
  2. UnityShader7:内置包含文件UnityCG.cginc与GG/HLSL语义
  3. Unity3D基础9:获取鼠标键盘输入
  4. opencv 图像边缘检测 Canny边缘检测算法使用
  5. 用自己的数据集训练Mask-RCNN实现过程中的坑
  6. Python笔记_第五篇_Python数据分析基础教程_文件的读写
  7. oracle常用函数介绍
  8. mysql 与 mycat集成读写分离
  9. Expanding Rods(二分)
  10. sql2005数据库备份—sql语句