Pagini recente » Cod sursa (job #1321853) | Cod sursa (job #2240166) | Monitorul de evaluare | Cod sursa (job #2725914) | Cod sursa (job #193065)
Cod sursa(job #193065)
#include<stdio.h>
#include<string.h>
#define NMAX 1000005
long Pi[NMAX],n;
char s[NMAX];
void prefix(){
int i,k;
Pi[1]=0;
for(i=2,k=0;i<=n;++i){
while(k>0&&s[i]!=s[k+1])
k=Pi[k];
if(s[i]==s[k+1])
++k;
Pi[i]=k;
}
}
int main(){
int t,ans,i;
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
for(scanf("%d",&t);t>0;--t){
scanf("%s",s+1);
n=strlen(s+1);
prefix();
ans=0;
for(i=2;i<=n;++i)
if(Pi[i]>0&&i%(i-Pi[i])==0)
ans=i;
printf("%d\n",ans);
}
fclose(stdin);
fclose(stdout);
return 0;
}