Cod sursa(job #1495696)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 3 octombrie 2015 14:04:06
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
#include<string.h>
#define N 1000000
char a[N+1];
int pi[N+1];
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    int t;
    scanf("%d",&t);
    while(t){
        int k=0;
        gets(a+1);
        int n=strlen(a+1);
        int i;
        for(i=2;i<=n;i++){
            while(k!=0&&a[i]!=a[k+1])
                k=pi[k];
            if(a[i]==a[k+1])
                k++;
            pi[i]=k;
        }
        i=n;
        while(i!=0&&(pi[i]==0||i%(i-pi[i])!=0))
            i--;
        printf("%d\n",i);
        t--;
    }
    return 0;
}