Cod sursa(job #517153)

Utilizator acelasi7Tudor Maxim acelasi7 Data 27 decembrie 2010 23:01:44
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
#include<string>
using namespace std;
#define dre 1000002
FILE *in=fopen("prefix.in","r"),*out=fopen("prefix.out","w");
char S[dre];
int s,V[dre],lp;
void pref()
{
	int i,k=0,iei=0;
	lp=0;
	memset(V,0,sizeof V);
	for(i=2;i<=s;++i)
	{
		while(k&&S[k+1]!=S[i])
			k=V[k];
		if(S[k+1]==S[i])
		{
			++k;
			lp=i;
		}
		V[i]=k;
		if(i%(i-k)==0&&k)
			iei=i;
	}
	fprintf(out,"%d\n",iei);
}
int main()
{
	int T,t;
	S[0]=2;
	fscanf(in,"%d",&T);
	for(t=1;t<=T;++t)
	{
		fscanf(in,"%s",&S[1]);
		s=strlen(S)-1;
		pref();
	}
	return 0;
}