Pagini recente » Cod sursa (job #2624734) | Cod sursa (job #1686236) | Cod sursa (job #1075904) | Cod sursa (job #825642) | Cod sursa (job #2322260)
#include <bits/stdc++.h>
int v[10000000];
char ch[1000000];
int main()
{
int n,k,i,j,q,mx,co,l0=0;
char c;
FILE*fi,*fo;
fi=fopen("prefix.in","r");
fo=fopen("prefix.out","w");
fscanf(fi,"%d",&n);
for(i=0; i<n; i++)
{
c=fgetc(fi);
k=0;
j=0;
ch[j]=c;
j++;
c=fgetc(fi);
l0=0;
while(c!=EOF && c!='\n')
{
ch[j]=c;
while(k>0 && ch[j]!=ch[k])
{
k=v[k-1];
}
if(ch[j]==ch[k])
k++;
v[j]=k;
j++;
c=fgetc(fi);
}
mx=0;
for(q=0; q<j; q++)
{
if(v[q]>0 && v[q]%(q+1-v[q])==0 && q>mx)
mx=q+1;
}
fprintf(fo,"%d\n",mx);
}
fclose(fi);
fclose(fo);
return 0;
}