Pagini recente » Cod sursa (job #2931136) | Cod sursa (job #912303) | Cod sursa (job #289001) | Cod sursa (job #101311) | Cod sursa (job #699583)
Cod sursa(job #699583)
#include<stdio.h>
#include<string.h>
#define Nmax 1000009
int n,t,i,q,phi[Nmax];
char s[1000009];
int prefix()
{
q=0;
for (int i=1;i<n;i++)
{
while (q && s[i]!=s[q]) q=phi[q-1];
if (s[i]==s[q]) q++;
phi[i]=q;
}
for (int i=n;i;i--)
if (phi[i] && (i+1)%(i+1-phi[i])==0) return i+1;
return 0;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
for (i=1;i<=t;i++)
{
gets(s);
n=strlen(s);
printf("%d\n",prefix());
}
}