题目链接:https://vjudge.net/problem/UVA-455
题解:水题:判断最短循环部分
循环判断即可
代码:
#include<iostream>
#include<cstring>
#include<string>
#define maxn 110
using namespace std;
char s[maxn];
int len;
bool check(int k)
{
int q=len/k;//一共多少段
for(int i=1; i<q; i++)
{
for(int j=0; j<k; j++)
if(s[j]!=s[i*k+j])
{
return false;
}
}
return true;
}
int main()
{
int n;
int ans;
cin>>n;
for(int w=0;w<n;w++)
{
if(w!=0)
cout<<endl;
ans=0;
cin>>s;
len=strlen(s);
for(int k=1; k<=len; k++)
{
if(len%k!=0)
continue;
if(check(k))
{
ans=k;
break;
}
}
cout<<ans<<endl;
}
return 0;
}