Pagini recente » Cod sursa (job #363217) | Cod sursa (job #851462) | Cod sursa (job #2428774) | Cod sursa (job #2338984) | Cod sursa (job #1047003)
#include <fstream>
using namespace std;
ifstream cin( "prefix.in" );
ofstream cout( "prefix.out" );
int n, p[ 1000001 ], len, ind, lenp, a;
char s[ 1000001 ];
int main()
{
int i, j, t;
cin >> n;
for ( t = 1; t <= n; t++ )
{
cin >> s + 1;
p[ 1 ] = 0;
for ( len = 1; s[ len ]; len++ );
j = 0;
for ( i = 2; i <= len; i++ )
{
while ( j && s[ j + 1 ] != s[ i ] )
j = p[ j ];
if ( s[ j + 1 ] == s[ i ] )
j++;
p[ i ] = j;
}
a = 0;
for ( i = len; i > 1; i-- )
if ( p[ i ] && i % ( i - p[ i ] ) == 0 )
{
a = i;
break;
}
cout << a << '\n';
}
}