习题3-4 周期串(Periodic Strings, UVa455) 如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 输入一个长度不超过80的字符串,输出其最小周期。
如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例
如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。
输入一个长度不超过80的字符串,输出其最小周期。)
前言
就这一道破题想了一晚上,主要觉得自己是对,没考虑到这个字符串还能是以1为周期的,浪费了这么多时间,属实可恨,记录一下
代码
#include <stdio.h>
#include <string.h>
char a[85];
int ch(char a[],int y){
for(int i=0;y+i<strlen(a);i++){
if(a[i]!=a[y+i]){
return 0;
}
}
return 1;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",a);
int len=strlen(a);
int sb=len;
for(int j=1;j<len;j++){
if(len%j==0 && ch(a,j)){
sb=j;
break;
}
}
printf("%d\n",sb);
if(t){
printf("\n");
}
}
return 0;
}