Cod sursa(job #1716589)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 13 iunie 2016 09:50:44
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#include <string.h>
#define lim 1000005
int pi[lim],n;
char v[lim],ch;
int prefix(){
    int i,poz=0;
    pi[1]=0;
    for(i=2;i<=n;i++){
        while(poz!=0&&v[poz+1]!=v[i])
            poz=pi[poz];
        if(v[poz+1]==v[i])
            poz++;
        pi[i]=poz;
    }
    i=n;
    while((i>=1)&&((pi[i]==0)||(i%(i-pi[i])!=0)))
        i--;
    return i;
}
int main(){
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    int i,t,rasp;
    scanf("%d%c",&t,&ch);
    for(i=1;i<=t;i++){
        gets(v+1);
        n=strlen(v+1);
        rasp=prefix();
        printf("%d\n",rasp);
    }
    return 0;
}