Pagini recente » Cod sursa (job #2404657) | Cod sursa (job #1072010) | Cod sursa (job #926381) | Cod sursa (job #2281141) | Cod sursa (job #1716578)
#include <stdio.h>
#define lim 1000005
int pi[lim],n;
char v[lim],ch;
int prefix(){
int i,poz=0;
pi[1]=0;
for(i=2;i<=n;i++){
while(poz!=0&&v[poz+1]!=v[i])
poz=pi[poz];
if(v[poz+1]==v[i])
poz++;
pi[i]=poz;
}
i=n;
while((i>=1)&&((pi[i]==0)||(i%(i-pi[i])!=0)))
i--;
return i;
}
int main(){
FILE *fin,*fout;
fin=fopen("prefix.in","r");
fout=fopen("prefix.out","w");
int i,j,t,rasp;
fscanf(fin,"%d",&t);
ch=fgetc(fin);
for(j=1;j<=t;j++){
i=1;
v[i]=fgetc(fin);
while(v[i]>='a'&&v[i]<='z'){
i++;
v[i]=fgetc(fin);
}
n=i-1;
rasp=prefix();
fprintf(fout,"%d\n",rasp);
}
fclose(fin);
fclose(fout);
return 0;
}