Cod sursa(job #1197182)

Utilizator xtreme77Patrick Sava xtreme77 Data 10 iunie 2014 23:34:26
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#include <cstring>
const int MAX = 1000100;
using namespace std;
char sir[MAX];
int urm[MAX];
int main()
{
    int t;
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&t);
    while(t--){
        int i;
        memset(urm,0,sizeof(urm));
        gets(sir+1);
        int now=0;
        int n=strlen(sir+1);
        for(i=2;i<=n;++i){
            while(sir[now+1]!=sir[i] and now)now=urm[now];
            if(sir[now+1]==sir[i])++now;
            urm[i]=now;
        }
        for(i=n;i>1;--i)
            if(urm[i] and i%(i-urm[i])==0)break;
        if(i==1)i=0;
        printf("%d\n",i);

    }
    return 0;
}