Pagini recente » Cod sursa (job #2744231) | Cod sursa (job #2741581) | Cod sursa (job #2299579) | Cod sursa (job #340777) | Cod sursa (job #980194)
Cod sursa(job #980194)
#include<stdio.h>
#include<string.h>
int pi[1000010];
char sir[1000010];
inline int solve () {
int n,i,p=0;
n=strlen(sir+1);
pi[1]=0;
for(i=2;i<=n;i++) {
while(p && sir[i]!=sir[p+1])
p=pi[p];
if(sir[i]==sir[p+1])
++p;
pi[i]=p;
}
for(i=n;i>=2;i--)
if(pi[i] && i-pi[i] && i%(i-pi[i])==0)
return i;
return 0;
}
int main() {
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int tc;
scanf("%d\n",&tc);
while(tc)
{
gets(sir+1);
printf("%d\n",solve());
tc--;
}
return 0;
}