Pagini recente » Cod sursa (job #1621998) | Cod sursa (job #1609581) | Cod sursa (job #2813871) | Cod sursa (job #2705024) | Cod sursa (job #520850)
Cod sursa(job #520850)
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int m,n,p,k,i,rez,j;
long L[1000005];
char A[1000005];
FILE *fin=fopen("prefix.in","r");
FILE *fout=fopen("prefix.out","w");
int main()
{
fscanf(fin,"%d",&m);
A[0]='0';
for (i=1;i<=m;i++)
{
fscanf(fin,"%s",&A[1]);
n=strlen(A)-1;
L[1]=0;
k=0;
rez=0;
for (p=2;p<=n;p++)
{
while (k>0 && A[p]!=A[k+1])
k=L[k];
if (A[k+1]==A[p])
k++;
L[p]=k;
if (p%(p-k)==0 && k>0)
rez=p;
}
fprintf(fout,"%d\n",rez);
}
fclose(fin);
fclose(fout);
return 0;
}