周期串 UVa455

来源:互联网 发布:sony 淘宝店推荐 编辑:程序博客网 时间:2024/06/05 19:43

题目:求一个串的最小循环节。


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.


Input

The 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.

Output

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


Sample Input

1

HoHoHo

Sample Output

2

分析:枚举法。


#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){long long t;scanf("%lld",&t);while(t--){char sh[1005];scanf("%s",sh);int n=strlen(sh),m;for(m=1;m<=n;m++){int flag=1;if(n%m==0){int i;for(i=m;i<n;i++){if(sh[i]!=sh[i%m]){flag=0;break;}else continue;}if(i==n) {printf("%d\n",m);break;} }}if(t)printf("\n");}return 0;}


原创粉丝点击