UVa 455 Periodic Strings (周期串)

Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu

Status

Description

Download as PDF

 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
大致题意:如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。求给出的字符串的最小周期。
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     int n,j;
 7     cin>>n;
 8     while(n--)
 9     {
10         char a[1000];
11         char b[1000];
12         b[0]='';
13         cin>>a;
14         strcat(b,a);
15         strcat(b,a);
16         int num=strlen(a);
17         for(int i=1;i<=num;i++)
18         {
19             int k=i;
20             if(strncmp(b+i,a,num-i) ==0 && num%k == 0 )
21             {
22                 cout<<k;
23                 break;
24             }
25         }
26         if(j!=n)
27             cout<<endl<<endl;
28         if(j==n)
29             cout<<endl;
30     }
31     return 0;
32 }
原文地址:https://www.cnblogs.com/caterpillarofharvard/p/4232195.html