Pagini recente » Cod sursa (job #629914) | Cod sursa (job #199036) | Istoria paginii utilizator/dumitrescutoma104 | Istoria paginii runda/simulare/clasament | Cod sursa (job #193064)
Cod sursa(job #193064)
#include<stdio.h>
#include<string.h>
#define NMAX 1000005
long 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("%lld",&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;
}