Pagini recente » Cod sursa (job #1873803) | Cod sursa (job #521258) | Cod sursa (job #732421) | Cod sursa (job #2236337) | Cod sursa (job #335325)
Cod sursa(job #335325)
#include <algorithm>
using namespace std;
#define DIM 1000001
int t, lg, rez, pi[ DIM ];
char s[ DIM ];
void calc_pi() {
int i, k;
k = rez = pi[ 1 ] = 0;
for( i = 2; i <= lg; ++ i ) {
while( s[ k + 1 ] != s[ i ] && k )
k = pi[ k ];
if( s[ k + 1 ] == s[ i ] )
++ k;
if( ( i % ( i - k ) ) == 0 && k )
rez = i;
}
}
void solve() {
int i;
scanf( "%d\n", &t );
for( i = 0; i < t; ++ i ) {
gets( s + 1 );
lg = strlen( s + 1 );
calc_pi();
printf( "%d\n", rez );
}
}
int main() {
freopen( "prefix.in", "r", stdin );
freopen( "prefix.out", "w", stdout );
solve();
return 0;
}