Pagini recente » Cod sursa (job #104670) | Cod sursa (job #2533205) | Cod sursa (job #1456562) | Cod sursa (job #2664545) | Cod sursa (job #210614)
Cod sursa(job #210614)
#include <stdio.h>
#define NMAX 1000000
char s[NMAX];
int PI[NMAX];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int i,k,ret;
int T,P;
scanf("%d\n",&T);
for (;T;T--)
{
fgets(s,NMAX,stdin);
ret=0;
PI[0]=0;
k=0;
for (i=1;s[i]>='a' && s[i]<='z';i++)
{
while ( (k) && (s[k]!=s[i]) )
k=PI[k-1];
if (s[k]==s[i]) k++;
PI[i]=k;
if (PI[i]==0) continue;
P=i+1 - PI[i];
if ( (PI[i]*2>=i+1) && ( (i+1)%P==0 ) )
ret=i+1;
}
printf("%d\n",ret);
}
return 0;
}