Pagini recente » Cod sursa (job #2803413) | Cod sursa (job #1194957) | Cod sursa (job #1300574) | Cod sursa (job #1544465) | Cod sursa (job #3200835)
#include <bits/stdc++.h>
#define N 1000008
#define inf 2000000001
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n;
char s[N];
int L[N];
void Citire()
{
fin >> s;
n = strlen(s);
}
void Rezolvare()
{
int i, j;
///Precalculare
L[0] = 0;
j = 0; i = 1;
while( i <= n )
{
if( s[i] == s[j] ){
L[i] = ++j;
i++;
}
else{
if( j > 0 ) j = L[j - 1];
else L[i] = 0, i++;
}
}
int lgmx = 0;
for( i=0; i<n; i++ )
if( (i + 1)%(i+1 - L[i]) == 0 && (i+1)/(i+1-L[i]) > 1 )
lgmx = max( lgmx, i + 1 );
fout << lgmx;
}
int main()
{
int task;
fin >> task;
while( task-- )
{
Citire();
Rezolvare();
fout << "\n";
}
return 0;
}