Uva455-Periodic Strings-周期串

来源:互联网 发布:淘宝店铺上传不了图片 编辑:程序博客网 时间:2024/05/18 03:47

题目链接https://vjudge.net/problem/UVA-455

如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabcabc以3为周期(注意它也以6和12为周期)。

输入一个长度不超过80的字符串,输出其最小周期。


这里面有个点,比如abcdef的周期不是零,而是6.

这里我写的程序主要是直接字符串的操作,包括复制,拼接和对比。关于这些函数的应用看链接http://www.jb51.net/article/37410.htm


#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){    int T;    scanf("%d",&T);    while(T--){        char s[100];        scanf("%s",s);        int len=strlen(s),ans=0;        char str[100];        for(int i=0;i<len/2;i++){            char temp[100];            memset(temp,'\0',sizeof(temp));            memset(str,'\0',sizeof(str));            strncpy(temp,s,i+1);            //printf("%s\n",temp);            if(len%(i+1)==0){                for(int j=1;j<=len/(i+1);j++){                    strcat(str,temp);                }                //printf("%s\n",str);                if(strcmp(str,s)==0) {ans=i+1;break;}            }        }        //提交了好几次,一直有问题,主要在下面两点        printf("%d\n",ans==0?len:ans);//如果ans=0的时候要让ans=len,就是全部长度循环一次        if(T!=0) printf("\n");//输出格式错误,最后一个测试用例输出之后不要空行    }    return 0;}


原创粉丝点击