2569 - 周期串(1030)*
时间限制 : 1 秒
内存限制 : 128 MB
如果一个字符串是以一个或者一个以上的长度为k 的重复字符串所连接成的,那么这个字符串就被称为周期为k的字符串。例如,字符串'abcabcabcabc'周期为3,因为它是由4个重复'abc'组成的。它同样是以6为周期(两个重复的'abcabc')和以12为周期(一个重复的'abcabcabcabc')。
写一个程序,读入一个字符串,并测定它的最小周期。
题目输入
输入一串不含空格的字符串,该字符串的长度不超过100。
题目输出
一个整数表示输入的字符串的最小周期。
输入/输出样例
输入格式
asdfgasdfgasdfgasdfgasdfg
输出格式
5
C语言解答
#include <stdio.h> #include <string.h> int main(void){ char ch[200]; int i,j; int ok; gets(ch); for (i=1; i<strlen(ch); i++) if (strlen(ch)%i==0) { ok=1; for (j=i; j<strlen(ch); j++) if(ch[j]!=ch[j%i]) { ok=0; break; } if (ok) { printf("%d\n",i); break; } } if (!ok) { printf("%d\n",strlen(ch)); } return 0; }
C++解答
#include <cstdlib> #include <iostream> #include <string.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { char c[120]; gets(c); int len=strlen(c); for(int i=1;i<=len;i++) if(len%i==0) { int ok=1; for(int j=i;j<len;j++) if(c[j]!=c[j-i]) {ok=0; break;} if(ok) {cout<<i<<endl; break;} } // system("PAUSE"); return EXIT_SUCCESS; }