Pagini recente » Cod sursa (job #408851) | Cod sursa (job #54321) | Cod sursa (job #10376) | Cod sursa (job #2915970) | Cod sursa (job #338348)
Cod sursa(job #338348)
#include<stdio.h>
#include<string.h>
#define Nmax 1000005
int n,i,rez,t;
char s[Nmax];
int pi[Nmax];
void prefix(){
int i,k=0;
pi[1]=0;
for(i=2;i<=n;++i){
while(k && s[k+1]!=s[i])
k=pi[k];
if(s[k+1]==s[i]) k++;
pi[i]=k;
if(k && (i%(i-k)==0) ) rez=i;
}
}
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
for(scanf("%d\n",&t); t; --t){
gets(s+1);
for(n=1; s[n]; n++);
n--;
prefix();
//for(i=1;i<=n;++i) printf("%d ",pi[i]);
printf("%d\n",rez);
}
fclose(stdin); fclose(stdout);
return 0;
}