Cod sursa(job #1481781)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 5 septembrie 2015 11:36:53
Problema Prefix Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.49 kb
#include<stdio.h>
#include<string.h>
char s[1000001];
int n,k,p[1000001],i,d,t;
int main() {
	freopen("prefix.in","r",stdin),freopen("prefix.out","w",stdout),scanf("%d\n",&t);
	while(t--) {
		gets(s),k=p[1]=d=0,n=strlen(s);
      	for(i=2;i<=n;i++) {
		  	while(k>1&&s[k]!=s[i-1])
                k=p[k];
            if(s[k]==s[i-1])
                k++;
            p[i]=k;
		}
      	for(i=1;i<=n;i++)
      	if(p[i]&&i%(i-p[i])==0)
            d=i;
      	printf("%d\n",d);
	}
}