Pagini recente » Cod sursa (job #56263) | Cod sursa (job #647048) | Cod sursa (job #442799) | Cod sursa (job #688439) | Cod sursa (job #1625037)
#include <stdio.h>
using namespace std;
const int N = 1000001;
char v[N];
int pred[N];
int main()
{
FILE *in=fopen("prefix.in","r");
FILE *out=fopen("prefix.out","w");
int t,i,j,k,rez;
fscanf(in,"%d\n",&t);
for(i=0;i<t;i++)
{
fgets(v+1,N,in);
pred[1]=0; k=0;
rez=0;
for(j=2;v[j];j++)
{
while(k>0 && v[j]!=v[k+1])
k=pred[k];
if(v[j]==v[k+1])
k++;
pred[j]=k;
if(pred[j]!=0 && j%(j-pred[j])==0)
rez=j;
}
fprintf(out,"%d\n",rez);
}
return 0;
}