uva_145_Periodic Strings

来源:互联网 发布:雷克萨斯es300h 知乎 编辑:程序博客网 时间:2024/05/29 18:12


A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string "abcabcabcabc" has period 3, since it is formed by 4 repetitions of the string "abc". It also has periods 6 (two repetitions of "abcabc") and 12 (one repetition of "abcabcabcabc").

Write a program to read a character string and determine its smallest period.

Input

The first line oif the input file will contain a single integer N indicating how many test case that your program will test followed by a blank line. Each test case will contain a single character string of up to 80 non-blank characters. Two consecutive input will separated by a blank line.

Output

An integer denoting the smallest period of the input string for each input. Two consecutive output are separated by a blank line.

Sample Input

1HoHoHo

Sample Output

2


求一个字符串的周期,先求出长度,则周期只能是长度的因数,包括1和它本身。



代码:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    char a[100],b[100];    int n,i,j,l;    scanf("%d",&n);    while(n--)    {        scanf("%s",a);        for(i=1;i<=strlen(a);i++)        {            if(strlen(a)%i==0)            {                for(j=0;j<i;j++)                {                    b[j]=a[j];                }                b[j]='\0';                for(j=i;j<strlen(a);j+=i)                {                    for(l=0;l<i;l++)                    {                        if(b[l]==a[j+l])                            continue;                        else                            goto X0;                    }                }                X0:                   if(j==strlen(a))                   {                       printf("%d\n",i);                       break;                   }            }        }         if(n>0) putchar('\n');    }    return 0;}



0 0
原创粉丝点击