Cod sursa(job #308414)

Utilizator agfsdhlkjpahomi tudor agfsdhlkj Data 27 aprilie 2009 00:28:11
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#include<string.h>
#define MAX 1000001
#define FOR_c(i,a) for(long i=1;i<=a;i++)
#define FOR_d(i,a) for(long i=a;i>=1;i--)
#define r_str(sir)  fgets(sir,MAX,stdin)
#define w(a) printf("%ld\n",a)
char s[MAX];
long p[MAX],t,d;

void pref()
{p[0]=-1;p[1]=0;
FOR_c(i,d)
	{long k=i-1;
	while(k>0&&s[i-1]!=s[p[k]])
		  k=p[k];
	p[i]=p[k]+1;}
}
int main()
{freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%ld",&t);
r_str(s);
FOR_c(i,t)
	{r_str(s);
	 s[strlen(s)-1]=NULL;
	 d=strlen(s);
	 pref();
	 FOR_d(l,d)
		if(l%(l-p[l])==0)
		if(p[l])
			break;
	 w(l);}
return 0;}