Cod sursa(job #312596)

Utilizator irene_mFMI Irina Iancu irene_m Data 6 mai 2009 16:38:58
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream.h>
#include <string.h>
#define MaxN 1000009

ifstream fin("prefix.in");
ofstream fout("prefix.out");

int n,pi[MaxN],T;
char s[MaxN];

void trans()
{
	int i;
	n++;
	for(i=n;i>=1;i--)
		s[i]=s[i-1];
	s[0]=' ';
}

void prefix()
{
	int i,k=0,x=0;
	pi[1]=0;
	for(i=2;i<=n;i++)
	{
		while(k && s[k+1]!=s[i])
			k=pi[k];
		if(s[k+1]==s[i])
			k++;
		pi[i]=k;
		if(k && i%(i-k)==0)
			x=i;
	}
	fout<<x<<'\n';
}

void gol()
{
	int i;
	for(i=1;i<=n;i++)
	{
		pi[i]=0;
		s[i]='\n';
	}
}

int main()
{
	fin>>T; fin.get();
	for(int i=1;i<=T;i++)
	{
		fin.get(s,MaxN,'\n');
		fin.get();
		n=strlen(s);
		trans();
		prefix();
		gol();
	}
	fin.close();
	fout.close();
	return 0;
}