您的位置:首页 > 其它

UVA 455 暴力枚举

2017-07-08 16:48 393 查看
#include<stdio.h>
#include<string.h>
int main()
{
char s[80];
int T,i,j;
scanf("%d",&T);
while(T--)
{
bool found=false;
scanf("%s",s);
int len=strlen(s);
for(i=1;i<=len/2;i++)//找因数,每个小于len/2的因数都可能是周期
{
if(len%i==0)
{
for(j=i;j<=len;j++)
if(s[j%i]!=s[j])break;//j%i是周期的下标,j是总串得下标
if(j==len){printf("%d\n",i);found=true;break;}
}
}
if(!found)printf("%d\n",len);
if(T)putchar('\n');//注意这里,不写得话会PE,很恶心
}
return 0;
}

找周期?abcabcabc得长度为9,因数为1,3,所以这两个数都可能是周期,依次尝试。如果都不对,那一定是9,本身

从最小的开始查找,一旦输出肯定就是最小的了。

注意下判断是否为正确周期得方式if(s[j%i]!=s[j])break;//j%i是周期的下标,j是总串得下标
if(s[j%i]!=s[j])break;//j%i是周期的下标,j是总串得下标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: