UVA - 455 Periodic Strings
题目大意。给一段循环字符串然后求该字符串最小重复子串
解题思路:求因子,然后因子从小到大一个一个试,试到了就直接break,不然会被刷新,别问我怎么知道的。。。
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
char str[10000000];
int main(){
int cc;
char buf[10000]={0};
int max=0;
bool flag=true;
while (~scanf("%d",&cc))
while(cc--)
{
cin>>str;
for(int i= 1;i<=(strlen(str));i++)
{
if(strlen(str)%i==0)
{
for(int j=0;j<i;j++)
{
buf[j]=str[j];
}
for(int j=0;j<strlen(str);j++)
{
if(str[j]!=buf[j%i])
{
flag=false;
break;
}
}
if(flag)
{
max=i;
break;
}
}
flag=true;
}//for
cout<<max<<endl;
if(cc)cout<<endl;
}//while
return 0;
}