A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string "abcabcabcabc"
has period 3, since it is formed by 4 repetitions of the string "abc". It also has periods 6 (two repetitions of "abcabc") and 12 (one repetition of "abcabcabcabc").
Write a program to read a character string and determine its smallest period.
Input
The first line oif the input file will contain a single integer N indicating how many test case that your program will test followed by a blank line. Each test case will contain a single character string
of up to 80 non-blank characters. Two consecutive input will separated by a blank line.
Output
An integer denoting the smallest period of the input string for each input. Two consecutive output are separated by a blank line.
Sample Input
1 HoHoHo
Sample Output
2
题解:输出排雷,最后一个输出后面不要输出空一行
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int num, mini, judge;
scanf("%d", &num);
while(num--)
{
mini=0;
scanf("%s", a);
for(int i=1; i<=strlen(a); i++)//以前i个为周期
{
if( strlen(a) % i == 0 )
{
if(i == strlen(a) && mini == 0)
{
mini = i;
break;
}
judge=1;
for(int j=0; j<strlen(a)-i; j+=i)//判断以前i个为周期是否成立
{
for(int k=j; k< j + i ; k++)
{
if(a[k] != a[k+i])
{
judge = 0;
break;
}
}
if(!(judge))
break;
}
if(judge == 1)
{
mini = i;
break;
}
}
}
printf("%d\n", mini);
if(num != 0)
printf("\n");
}
return 0;
}