2569 - 周期串(1030)*

如果一个字符串是以一个或者一个以上的长度为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;
}

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题