Pagini recente » Cod sursa (job #1312628) | Cod sursa (job #251595) | Cod sursa (job #2693878) | gicu_01 | Cod sursa (job #1198660)
#include <cstdio>
FILE*f=fopen("prefix.in","r");
FILE*h=fopen("prefix.out","w");
int t,n,pref[1000005],k;
char b[1000005];
bool o[1000005];
int main(){
fscanf(f,"%d\n",&t);
while ( t ){
--t;
char c=0;
n=0;
fgets(b+1,sizeof(b),f);
while( c!='\n' ){
c=b[++n];
}
--n;
pref[1]=0;
for ( int i=2;i<=n;++i ){
pref[i]=0;
o[i]=0;
k=pref[i-1];
while ( k>0&&b[k+1]!=b[i] )
k=pref[k];
if ( b[k+1]==b[i] )
++k;
pref[i]=k;
}
int l=0;
for ( int i=2;i<=n;++i )
if ( i%(i-pref[i])==0&&pref[i]!=0 ){
o[i]=1;
l=i;
}
fprintf(h,"%d\n",l);
}
return 0;
}