Periodic Strings ( UVA

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

#include <cstdio>
#include <string.h>
#define N 1024
#define MAXN 0x3f3f3f3f
#include <map>
#include <string>
#include <cmath>
#define pi acos(-1.0)
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
int a[1000000]; 
string ch[100+5];
int main()
{
    int t,n,m,k,i,j,ans;
    string str,sub,st;
    while(cin>>t)
    {
        while(t--)
        {
            cin>>str;
            n=str.size();ans=0;
            //cout<<str<<endl; 
            for(i=1;i<=n;i++)
            {
                //sub=str.substr(0,i);
                if(n%i==0) 
                {
                    for(j=i;j<n;j++) if(str[j]!=str[j%i]) break;
                    if(j==n) {cout<<i<<endl;break;}
                }
            }
            if(t) cout<<endl;
        }
    }
    return 0; 
}
所遇皆星河
原文地址:https://www.cnblogs.com/Shallow-dream/p/11632261.html