Pagini recente » Cod sursa (job #878180) | Cod sursa (job #651863) | Cod sursa (job #693986) | Cod sursa (job #1809218) | Cod sursa (job #325139)
Cod sursa(job #325139)
#include<stdio.h>
#include<string.h>
#define N 1000010
char s[N],*sp;
int t,pr[N],sol();
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);sp=s+1;
}
void solve()
{
for(;t;t--)printf("%d\n",sol());
}
int sol()
{
scanf("%s",sp);
int ret=0,k=0,L=strlen(sp)+1;
if(L==1)return 0;
k=0;
for(int i=2;i<=L;i++)
{
while(s[i]!=s[k+1]&&k>0)k=pr[k];
if(s[i]==s[k+1])k++;
pr[i]=k;
if(pr[i])
if(!(i%(i-k)))
ret=ret>i?ret:i;
}
return ret;
}