Cod sursa(job #2661059)

Utilizator darisavuSavu Daria darisavu Data 21 octombrie 2020 11:15:11
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int urm[1000005],n,k,i,T,ok;
char N[1000005];
int main()
{
    f>>T;
    while(T)
    {
        f>>N;
        n=strlen(N);
        k=0;
        urm[0]=0;
        for(i=2; i<=n; i++)
        {
            while(k>0&&N[k]!=N[i-1]) k=urm[k];
            if(N[k]==N[i-1]) k++;
            urm[i]=k;
        }
        ok=0;
        for(i=n; i>=0; i--)
        {
            if(urm[i]!=0&&(i%(i-urm[i])==0))
            {
                g<<i<<'\n';
                ok=1;
                break;
            }
        }
        if(ok==0) g<<0<<'\n';
        T--;

    }
    return 0;
}