Pagini recente » Cod sursa (job #673459) | Cod sursa (job #662657) | Cod sursa (job #714380) | Cod sursa (job #2207007) | Cod sursa (job #855295)
Cod sursa(job #855295)
#include<stdio.h>
#include<string.h>
char s[1000005];
int n,p[1000005];
inline void solve()
{
int i,x;
p[0]=0;x=0;
for(i=2;s[i]!=0;i++)
{
while(x && s[i]!=s[x+1])
x=p[x];
if(s[i]==s[x+1])
x++;
p[i]=x;
}
int max=0;
for(i=1;s[i]!=0;i++)
if(p[i]!=i && i%(i-p[i])==0 && p[i])
max=i;
printf("%d\n",max);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int n,i;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
gets(s+1);
solve();
}
return 0;
}