UVA-455Periodic Strings

来源:互联网 发布:文娱小说推荐知乎 编辑:程序博客网 时间:2024/06/01 09:41
A character string is said to have period k if it can be formed by concatenating one or more repetitionsof another string of length k. For example, the string ”abcabcabcabc” has period 3, since it is formedby 4 repetitions of the string ”abc”. It also has periods 6 (two repetitions of ”abcabc”) and 12 (onerepetition of ”abcabcabcabc”).Write a program to read a character string and determine its smallest period.InputThe first line oif the input file will contain a single integer N indicating how many test case that yourprogram will test followed by a blank line. Each test case will contain a single character string of upto 80 non-blank characters. Two consecutive input will separated by a blank line.OutputAn integer denoting the smallest period of the input string for each input. Two consecutive output areseparated by a blank line.Sample Input1HoHoHoSample Output2
#include <iostream>#include<cstdio>#include<cstring>#include<string.h>#include<string>#include<stdio.h>#include<algorithm>using namespace std;int main(){    char ch[2000];    int j;    int t;    scanf("%d",&t);    int s=1;    getchar();    while(t--)    {        s=1;        scanf("%s",ch);        if(ch[0]=='\0')        {            printf("0\n");            continue;        }        int f=1;        while(f==1)        {            f=0;            for(j=0; j<strlen(ch); j++)            {                if(ch[j]!=ch[j%s])                {                    f=1;                    break;                }            }            if(f==0&&strlen(ch)%s==0)                break;            else            {                f=1;                s++;            }        }        if(t==0)        printf("%d\n",s);        else            printf("%d\n\n",s);    }    return 0;}