Pagini recente » Cod sursa (job #2133993) | Cod sursa (job #591260) | Cod sursa (job #3128175) | Cod sursa (job #23616) | Cod sursa (job #1279480)
#include <stdio.h>
#define MAXN 1000000
int n, pi[MAXN];
char s[MAXN];
inline int maxpf(){
int i, r;
pi[0]=0;
r=0;
for(i=1; i<n; i++){
while((r>0)&&(s[i]!=s[r])){
r=pi[r-1];
}
if(s[i]==s[r]){
r++;
}
pi[i]=r;
}
i=n;
while((i>0)&&((pi[i-1]==0)||(i%(i-pi[i-1])!=0))){
i--;
}
return i;
}
int main(){
int T, t, a;
char ch;
FILE *fin, *fout;
fin=fopen("prefix.in", "r");
fout=fopen("prefix.out", "w");
fscanf(fin, "%d ", &T);
for(t=0; t<T; t++){
n=0;
ch=fgetc(fin);
while(ch!='\n'){
s[n++]=ch;
ch=fgetc(fin);
}
a=maxpf();
fprintf(fout, "%d\n", a);
}
fclose(fin);
fclose(fout);
return 0;
}