Cod sursa(job #314992)

Utilizator cotofanaCotofana Cristian cotofana Data 13 mai 2009 23:01:55
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <stdio.h>
#include <string.h>
#define dim 1000002

char s[dim];
int n, phi[dim], t;

int prefix()
{
	int q, k=0, sol=0;
	phi[1]=0;
	for (q=2; q<=n; q++)
	{
		while (k && s[k+1]!=s[q]) k=phi[k];
		if (s[k+1]==s[q]) k++;
		phi[q]=k;
		if (k && (q%(q-k)==0)) sol=q;
	}
	return sol;
}

int main()
{
	freopen("prefix.in", "r", stdin);
	freopen("prefix.out", "w", stdout);
	scanf("%d\n", &t);
	for (; t; t--)
	{
		scanf("%s\n", s+1);
		n=strlen(s+1);
		memset(phi, 0, sizeof(phi));
		printf("%d\n", prefix());
	}
	return 0;
}