Pagini recente » Cod sursa (job #1037698) | Cod sursa (job #1297186) | Cod sursa (job #2574482) | Cod sursa (job #2863634) | Cod sursa (job #1849255)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1000100
using namespace std;
int len ;
char sir [ N ];
int pi [ N ];
void failure( ){
static int k , i ;
pi [ 0 ] = -1;
k = -1 ;
for ( i = 0 ; i < len ; ){
while ( k >=0 && sir [ i ] != sir[ k ] ){
k = pi [ k ] ;
}
k ++ ;
i ++ ;
pi [ i ] = k ;
}
}
int main(){
int T , i , val ;
int spy ;
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&T);
while ( T-- ){
scanf("%s",sir);
len = strlen ( sir );
failure();
spy = 0;
for ( i = len ; i > 0 ; i -- ){
val = pi [ i ];
if( i % ( i - val ) == 0 && val != 0 ){
printf("%d\n",i );
spy = 1;
break ;
}
}
if ( spy == 0 ){
printf( "0\n");
}
}
return 0;
}