Ideas para resolver problemas
Procesar la matriz ppp , deja que la longitud de la cuerda seannn , la cadena del patrón es1 11 ap [n] p [n]p [ n ] bit y cadena de patrónn-ésimo - p [n] np [n]norte-El bit p [ n ] con el bit n se hace coincidir. Entonces, sinmod (n - p [n]) = = 0 n mod (np [n]) == 0n m o d (n-p [ n ] )==0 , hay subcadenas consecutivas repetidas, la longitud esn - p [n] np [n]norte-p [ n ] , el número de ciclos esn / n - p [n] n / np [n]n / n-p [ n ]
Código
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
char s[1000010];
int l,i,j,p[1000010];
int main(){
scanf("%s",s+1);
l=strlen(s+1);
while(s[1]!='.'||l!=1){
i=1;j=0;
for(int i=1;i<l;i++)
{
while(j>0&&s[i+1]!=s[j+1])
j=p[j];
if(s[i+1]==s[j+1])
j++;
p[i+1]=j;
}
if(l%(l-p[l])==0)
printf("%d\n",l/(l-p[l]));
else printf("1\n");
scanf("%s",s+1);
l=strlen(s+1);
memset(p,0,sizeof(p));
}
}