Pagini recente » Cod sursa (job #2795855) | Cod sursa (job #1077813) | Istoria paginii runda/ath3/clasament | test_001 | Cod sursa (job #64306)
Cod sursa(job #64306)
#include <stdio.h>
#define fin "prefix.in"
#define fout "prefix.out"
#define Nmax 1000001
int N,T,bst,pi[Nmax];
char p[Nmax];
int main() {
int i,k;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d",&T);
for (;T>0;--T) {
scanf("%s",p+1);
pi[1]=0;
k=0; bst=0;
for (i=2;p[i]!=(char)NULL;++i) {
while (k>0 && p[k+1]!=p[i])
k=pi[k];
if ( p[k+1]==p[i])
++k;
pi[i]=k;
}
N=i-1;
for ( i=2;i<=N;++i)
if ( i % ( i - pi[i] ) == 0 && pi[i] >= i/2)
bst=i;
printf("%d\n",bst);
}
return 0;
}