Cod sursa(job #779742)

Utilizator crushackPopescu Silviu crushack Data 18 august 2012 17:26:48
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
#include <string.h>
#define NMax 1000010
using namespace std;

const char IN[]="prefix.in",OUT[]="prefix.out";

ifstream fin(IN);
ofstream fout(OUT);

int Tes,N,Rez;
int P[NMax];
char A[NMax];

inline void prefix(){

	int i,k=0;
	P[1]=0;Rez=0;
	for (i=2;A[i];++i)
	{
		while (k && A[k+1]!=A[i])
			k=P[k];
		k+= (A[k+1]==A[i]);
		P[i]=k;
	}
	for (--i;i;--i)
		if (P[i] && i%(i-P[i])==0 ) { Rez=i;return;}

}

int main()
{
	fin>>Tes;fin.get();
	while (Tes--)
	{
		fin.getline(A+1,NMax);
		prefix();
		fout<<Rez<<"\n";
	}
	fin.close();fout.close();
	return 0;
}