博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Period[HDU1358]
阅读量:5154 次
发布时间:2019-06-13

本文共 2034 字,大约阅读时间需要 6 分钟。

Period

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 2120    Accepted Submission(s): 1039

Problem Description 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.  

Input The input file 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.  

Output 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.  

Sample Input

3

aaa

12

aabaabaabaab

0  

Sample Output

Test case #1

2 2

3 3

 

Test case #2

2 2

6 2

9 3

12 4  

Recommend JGShining

#include
#include
#define gs 1000010int next[gs];char str[gs];void GetNext(char * str,int * next){ int N=strlen(str+1); next[1]=0; int j=0; for(int i=2;i<=N;i++) { while(j>0 && str[j+1]!=str[i]) j=next[j]; if(str[j+1]==str[i]) j+=1; next[i]=j; }}int main(){ int N,cas=0; while (scanf("%d",&N)!=EOF) { if (N==0) return 0; cas++; printf("Test case #%d\n",cas); scanf("%s",str+1); GetNext(str,next); for (int i=2;i<=N;i++) if (i%(i-next[i])==0 && i/(i-next[i])>1) printf("%d %d\n",i,i/(i-next[i])); printf("\n"); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/dramstadt/p/3340423.html

你可能感兴趣的文章
关于用C#实现宽带的连接
查看>>
codevs 3369 膜拜
查看>>
Python网络编程笔记一
查看>>
配置Sublime Text2的python运行环境(Sublime Text 3也类似)
查看>>
SQL (FMDB)
查看>>
eclipse 常用设置(一)
查看>>
springmvc 注解总结
查看>>
FTL指令常用标签及语法
查看>>
Linux查看系统信息的一些命令及查看已安装软件包的命令
查看>>
Asp.Net入门(一)
查看>>
Day 07 数据类型的内置方法(列表\字典\元祖\集合),深浅拷贝
查看>>
PAT甲题题解-1119. Pre- and Post-order Traversals (30)-(根据前序、后序求中序)
查看>>
小型web项目的模块化(转)
查看>>
HDU 2756 & UVA 11572 Unique Snowflakes
查看>>
JavaScript教程:浅析JS运行机制
查看>>
JavaScript基础篇
查看>>
色块图
查看>>
SQL游标写入时触发
查看>>
两个应用的跳转
查看>>
Centos7,Docker-配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)...
查看>>