Pagini recente » Istoria paginii runda/oni_11_12_6/clasament | Cod sursa (job #1902787) | Cod sursa (job #969870) | Cod sursa (job #801218) | Cod sursa (job #87203)
Cod sursa(job #87203)
#include <cstdio>
const int maxl = 10000001;
FILE *in = fopen("prefix.in","r"), *out = fopen("prefix.out","w");
int t;
char a[maxl];
int pi[maxl];
int main()
{
fscanf(in, "%d", &t);
while ( t-- )
{
fscanf(in, "%s", a + 1);
int k = 0;
for ( int i = 2; a[i]; ++i )
{
while ( k > 0 && a[k + 1] != a[i] )
k = pi[k];
if ( a[k + 1] == a[i] )
++k;
pi[i] = k;
}
int max = 0;
for ( int i = 2; a[i]; ++i )
if ( pi[i] > 0 && i % (i - pi[i]) == 0 )
max = i;
fprintf(out, "%d\n", max);
}
return 0;
}