题目:
求字符串中最小循环节。
输入:
第一行为测试数目N,空一行之后为N个字符串,每个字符串之间空一行。
输出:
每个字符串最小循环节长度k,每个答案之间空一行。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int N;
cin >> N;
char s[100];
while( N-- )
{
cin >> s;
int length = strlen(s);
int k = 1;
while( k < length )
{
int a = length%k;
if( a == 0 )
{
int i;
for( i = 0; i < k; i++)
{
int j = 1;
while( j < length/k )
{
if( s[i + j*k] == s[i] ) j++;
else break;
}
if( j != length/k ) break;
}
if( i == k ) break;
else k++;
}
else k++;
}
cout << k << endl;
if( N )cout << endl;
}
return 0;
}