Cod sursa(job #2718726)

Utilizator matei123Biciusca Matei matei123 Data 9 martie 2021 08:44:10
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in"); ofstream g("prefix.out");
char sir[1000002];
int t,kmp[1000002];
int build_kmp(char str[])
{   int k=0,n;
    n=strlen(str);
    kmp[1]=0;
    for(int i=2;i<=n;i++)
    {   while(k>0 && str[i-1]!=str[k]) k=kmp[k];
        if(str[i-1]==str[k]) k++;
        kmp[i]=k;
    }
    for(int i=n;i;i--)
        if(kmp[i] && i%(i-kmp[i])==0) return i;
    return 0;
}
int main()
{   f>>t; f.get();
    while(t--)
    {   f.getline(sir,1000002);
        g<<build_kmp(sir)<<'\n';
    }
    g.close(); return 0;
}