Pagini recente » Cod sursa (job #429069) | Cod sursa (job #720100) | Cod sursa (job #873158) | Cod sursa (job #2517949) | Cod sursa (job #892287)
Cod sursa(job #892287)
#include<cstdio>
#include<cstdlib>
#include<cstring>
int len,i,t,prefix[1000010],q,ok;
char A[1000010];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
for(;t;--t)
{
scanf(" %s",A+1);
len=strlen(A+1);
memset(prefix,0,sizeof(prefix));
for(i=2;i<=len;i++)
{
while(q&&A[q+1]!=A[i])q=prefix[q];
if(A[q+1]==A[i])++q;
prefix[i]=q;
}
ok=0;
for(i=len;i>=1;i--)
{
if(!prefix[i])continue;
if(i-prefix[i]==0)continue;
if(!(i%(i-prefix[i]))){ok=1;printf("%d\n",i);break;}
}
if(!ok)printf("0\n");
}
return 0;
}