Pagini recente » Cod sursa (job #1663352) | Cod sursa (job #2324464) | Cod sursa (job #1844111) | Cod sursa (job #153664) | Cod sursa (job #614044)
Cod sursa(job #614044)
#include <fstream>
#include <cstring>
#define LMAX 1000005
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int LS, i, T, end, Phi[LMAX], LgPer[LMAX], LgMax = 0;
char S[LMAX];
int main()
{
in >> T;
for( ; T--; )
{
LgMax = 0;
memset( Phi, 0, sizeof(Phi) );
memset( LgPer, 0, sizeof(LgPer) );
memset( S, 0, sizeof(S) );
in >> (S+1);
LS = strlen(S+1);
end = 0;
for( i = 2; i < LS; ++i )
{
for( ; end && S[end+1] != S[i]; end = Phi[end] );
if( S[end+1] == S[i] ) ++end;
Phi[i] = end;
if( Phi[i] && !(i%(i-Phi[i])) ) LgMax = i;
}
out << LgMax << '\n';
}
return 0;
}