标签:des style io color ar os sp for strong
Time Limit: 3000MS | Memory Limit: 30000K | |
Total Submissions: 13584 | Accepted: 6396 |
Description
Input
Output
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
题意:求出不同的循环节下循环的长度和循环节个数
根据next数组的性质即 i-next[i] 为一个循环节的长度
#include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <algorithm> #include <cmath> #define N 1000009 using namespace std; int n; char a[N]; int next[N]; int len; void getnext() { int i,j; i=0; j=-1; next[0]=-1; while(i<n) { if(j==-1||a[i]==a[j]) { i++; j++; next[i]=j; } else j=next[j]; } } int main() { int ca=1; while(scanf("%d",&n),n) { scanf("%s",&a); getnext(); // for(int i=0;i<=n;i++) // cout<<next[i]<<" "; cout<<"Test case #"<<ca++<<endl; for(int i=1;i<=n;i++)//判断多种循环节的情况 { len=i-next[i]; if(len!=i&&i%len==0)//遇到循环就输出 cout<<i<<" "<<i/len<<endl; } cout<<endl; } return 0; }
标签:des style io color ar os sp for strong
原文地址:http://blog.csdn.net/wust_zjx/article/details/40950823