Cod sursa(job #1047003)

Utilizator drobertDumitru Robert drobert Data 3 decembrie 2013 19:57:13
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#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';
	}
}