Cod sursa(job #1481785)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 5 septembrie 2015 11:38:24
Problema Prefix Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.49 kb
#include<stdio.h>
#include<string.h>
char s[1000005];
int n,k,p[1000005],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),strcpy(s+1,s);
      	for(i=2;i<=n;i++) {
		  	while(k&&s[k+1]!=s[i])
                k=p[k];
            if(s[k+1]==s[i])
                k++;
            p[i]=k;
            if(p[i]&&i%(i-p[i])==0)
                d=i;
      	}
      	printf("%d\n",d);
	}
}