Period||POJ1961
来源:互联网 发布:为什么学linux 编辑:程序博客网 时间:2024/06/05 17:53
link:http://poj.org/problem?id=1961
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 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 thenumber 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
3aaa12aabaabaabaab0
Sample Output
Test case #12 23 3Test case #22 26 29 312 4
题解:这个和poj2406基本相似
可以看看这个http://blog.csdn.net/csdn_muxin/article/details/77231807
kmp简单运用
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>using namespace std;char s[1000100];int next[1000100];void kmp(){ int n=strlen(s); int i,j; i=0,j=-1; next[0]=-1; while(s[i]) { if(j==-1||s[i]==s[j]) { i++,j++; next[i]=j; } else j=next[j]; }}int main(){ int n,i,j,c=1; while(scanf("%d",&n),n!=0) { scanf("%s",s); kmp(); printf("Test case #%d\n",c++); for(i=1;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;}
阅读全文
0 0
- poj1961 Period
- poj1961 Period
- poj1961 Period
- poj1961 Period
- poj1961 Period
- POJ1961-Period
- [POJ1961] Period
- poj1961 period
- Period||POJ1961
- 【KMP】 poj1961 Period
- poj1961 Period----KMP
- poj1961 Period (KMP)
- KMP POJ1961 Period
- [POJ1961] Period/[NKOI2201] 周期
- [POJ1961]Period(KMP)
- poj1961 Period(KMP)
- POJ1961 Period(KMP)
- poj1961——Period
- mfs分布式存储搭建(三)
- 一道关于虚函数表的题
- MySQL的字符格式
- oracle监听程序当前无法识别连接符中请求的服务
- Maven学习(二)使用命令创建maven项目
- Period||POJ1961
- CF 590D Top Secret Task【dp递推+滚动数组】【好题】
- 2017多校8-1011killer name
- c#创建带参数的线程
- Java条形码生成技术-Barcode4j
- HDU 6138 Fleet of the Eternal Throne (2017多校8
- JavaScript中的call方法
- PAT 1036 跟奥巴马一起编程
- 2017第八次多校联合hdu6140(阅读题)