Radio Transmission
题目描述
给你一个字符串,它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。
输入格式
第一行给出字符串的长度 ,第二行给出一个字符串,全由小写字母组成。
输出格式
输出最短的长度。
样例
样例输入 1
8
cabcabca
样例输出 1
3
样例说明
对于样例,我们可以利用 abc 不断自我连接得到 abcabcabc,读入的 cabcabca 是它的子串。
#include<stdio.h>
#include<string.h>
char f[1001000];
int nt[1001000],n,m;
void gnt(){
int i=0,j=nt[0]=-1;
while(i<n){
if(j==-1||f[i]==f[j]){
i++;j++;
nt[i]=j;
}
else
j=nt[j];
}
}
int main(){
scanf("%d",&n);
scanf("%s",f);
n=strlen(f);
gnt();
m=n-nt[n];
printf("%d\n",m);
return 0;
}