uva_145_Periodic Strings


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

1

HoHoHo

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;
}



你可能感兴趣的:(c)