uva-455

来源:互联网 发布:冷兵器 知乎 编辑:程序博客网 时间:2024/04/29 12:57

利用约数计算周期,直接枚举

#include<stdio.h>#include<string.h>#define maxn 800char any[maxn];int som[maxn];int main(){int k,j=0,T,n,x=0,y=0,i;char c;scanf("%d",&T);memset(som,0,sizeof(som));while(T--){scanf("%s",any); n=strlen(any); <span style="font-family: Arial, Helvetica, sans-serif;">//这里用n记录了输入字符串的长度</span>for (i = 1 ; i <= n ; ++ i)     if (n%i == 0) {         for (k = i ; k < n ; ++ k)             if (any[k] != any[k%i])                 break;         if (k == n) { som[j]=i;j++;break;       }  }}  for(int s=0;s<j;s++){printf("%d\n",som[s]);}return 0;}

这一份是之前写的伪代码 =。=  好乱
/*int h=n,flag2=0;while(h--){if(any[h]==any[0])  flag2=1;else break;}if(flag2==1){wbd[a]=1;a++;break;}for(i=2;i<n;i++){if(n%i==0){som[y]=i;//这里用som数组记录下字符串长度n的约数 只要字符串有周期 就在这里产生y++;}}for(int t=0;t<y;t++){//y这里记录的是字符串长度的约数的个数  for(int z=0;z<som[t];z++){if(any[z]==any[som[t]+z]){ flag=1;continue;}else {  flag=0;  break;}}if(flag==1){wbd[a]=som[t];a++;break;}}}for(int u=0;u<a;u++){printf("%d\n",wbd[u]);}}*/


0 0
原创粉丝点击