Pagini recente » Cod sursa (job #866706) | Cod sursa (job #1069405) | Cod sursa (job #1251567) | Cod sursa (job #2414679) | Cod sursa (job #977800)
Cod sursa(job #977800)
#include<stdio.h>
#include<string.h>
int pi[1000010];
char sir[1000010];
int solve () {
int n,i,last=0,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;
if(p && i-p && i%(i-p)==0)
last=i;
}
return last;
}
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;
}