假设字串长度为 x,字符串从 1 开始计数
next[1]=next[2]=……next[x]=0 next[x+1]=1 next[x+n]=n 发现从 x+1 位置开始,next 数组逐渐递增 1
所以答案为 n-next[n]
const int N=1e6+5;
int n,m;
int i,j,k;
char a[N];
int f[N];
void getfail(char *s)
{
int len=strlen(s);
f[0]=f[1]=0;
for(int i=1;i<len;i++){
int j=f[i];
while(j && s[i]!=s[j]) j=f[j];
if(s[j]==s[i]) f[i+1]=j+1;
else f[i+1]=0;
}
}
int main()
{
//IOS;
while(~sd(n)){
ss(a+1);
getfail(a+1);
pd(n-f[n]);
}
//PAUSE;
return 0;
}