hdu 3746 Cyclic Nacklace

来源:互联网 发布:开黑用什么软件 编辑:程序博客网 时间:2024/05/16 09:32

求最少加几个字符使字符串成周期串

len-next[len]周期串最小周期的长度



#include<stdio.h>#include<string.h>int next[1000010];char s[1000010];void get(){    int i,j,len;    next[1]=0;    j=0;    len=strlen(s+1);    for(i=2;i<=len;i++)    {        while(j>0&&s[i]!=s[j+1])j=next[j];        if(s[i]==s[j+1])            j++;        next[i]=j;    }}    int main(){        int t,len;    scanf("%d",&t);    while(t--)    {        scanf("%s",s+1);        len=strlen(s+1);        get();        if(next[len]==0)printf("%d\n",len);        else if(len%(len-next[len])==0)printf("0\n");        else printf("%d\n",len-next[len]-len%(len-next[len]));            }    return 0;}


原创粉丝点击