UVA 455 暴力枚举

来源:互联网 发布:怎么找淘宝达人 编辑:程序博客网 时间:2024/06/07 12:10
#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是总串得下标

原创粉丝点击