Pagini recente » Cod sursa (job #1076323) | Cod sursa (job #178327) | Cod sursa (job #1486071) | Cod sursa (job #245062) | Cod sursa (job #314992)
Cod sursa(job #314992)
#include <stdio.h>
#include <string.h>
#define dim 1000002
char s[dim];
int n, phi[dim], t;
int prefix()
{
int q, k=0, sol=0;
phi[1]=0;
for (q=2; q<=n; q++)
{
while (k && s[k+1]!=s[q]) k=phi[k];
if (s[k+1]==s[q]) k++;
phi[q]=k;
if (k && (q%(q-k)==0)) sol=q;
}
return sol;
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d\n", &t);
for (; t; t--)
{
scanf("%s\n", s+1);
n=strlen(s+1);
memset(phi, 0, sizeof(phi));
printf("%d\n", prefix());
}
return 0;
}