UVa 455 - Periodic Strings

来源:互联网 发布:泰州市好数据库工程师 编辑:程序博客网 时间:2024/05/16 11:26
一开始想的是求出每个字符出现的次数并且储存,并且每个字符的次数应该相同,然后用字符串的长度除以这个次数。但是这个解法不适合heedheedheed这样的或者12112121211212这样的问题求解。
所以采用枚举最小周期的大小并测试,直到比较通过。
#include<stdio.h>#include<stdlib.h>#include<string.h>char str[104];int main(){    int n;    while (~scanf("%d",&n)) //这里等于while(scanf("%d",&n) != EOF)        while (n --)        {            scanf("%s",str);            int len = strlen(str);            int k,i;            for (k,i = 1 ; i <= len ; ++ i)                if (len%i == 0)                {                    for (k = i ; k < len ; ++ k)                        if (str[k] != str[k%i])                            break;                    if (k == len)                    {                        printf("%d\n",i);                        break;                    }                }            if (n) printf("\n");        }    return 0;}

0 0