Cod sursa(job #342865)
Utilizator | Ilie Ionut ionutz32 | Data | 23 august 2009 23:07:08 |
---|---|---|---|
Problema | Prefix | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <stdio.h>
#include <string.h>
char s[1000005];
int pi[1000005],t,contor,a,b,k,i;
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
for (contor=1;contor<=t;++contor)
{
gets(s+1);
pi[1]=0;
k=0;a=0;
for (i=2;i<=strlen(s+1);++i)
{
while (k>0 && s[k+1]!=s[i])
k=pi[k];
if (s[k+1]==s[i])
k=k+1;
pi[i]=k;
if (k>0 && (i%(i-k)==0))
a=i;
}
printf("%d\n",a);
}
return 0;
}