/*
* Copyright (c) 2016, 安徽大学计算机科学与技术学院
* All rights reserved.
* 作 者: 杨磊
* 完成日期:2016 年 12 月 05 日
* 问题描述:
* 求一组字符串的最小循环节
* 思路:由于是循环的,所以从长度的最小约数k开始遍历。
* 如果s[i]==s[i%k],则k就是最小循环单位。
*/
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define max 105
char s[max];
int main()
{
int n, len;
scanf("%d", &n);
while (n--)
{ scanf("%s",s);
len = strlen(s);
int i,j;
for ( i = 1; i <= len;i++)
if (len%i == 0)
{
int flag = 1;
for ( j = i; j < len;j++)
if (s[j] != s[j%i])
{
flag = 0;
break;
}
if (flag)
{
printf("%d\n", i);
if (n)
putchar('\n');
break;
}
}
}
return 0;
}
转载于:https://www.cnblogs.com/super-yang/p/6819578.html