做这种题一定要提前在草稿纸上模拟清楚!
思路:
从i=1开始循环,只有i是length的约数的情况下,i才可能是周期;然后定义一个j,以便逐个逐个地进行比较,只有当j等于length即所有数都满足这个周期时,这个i才是最小周期;
注意:
此题对输入和输出格式有要求,两个数据之前还需要一行来隔开;在输入的时候,第一个gets(a)是为了读取两个数据之间的空行,第二个gets(a)才是拿来读取数据的。
代码实现如下:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
char a[85];
gets(a);
gets(a);
int length=strlen(a);
int i,j;
for(i=1;i<=length;i++)
{
if(length%i!=0)
continue;
else
{
for(j=i;j<length;j++)
{
if(a[j]!=a[j%i])
break;
}
if(j==length)
{
printf("%d\n",i);
break;
}
}
}
if(n!=0)
printf("\n");
}
return 0;
}