Cod sursa(job #2458301)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 20 septembrie 2019 10:11:44
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream cin("prefix.in");
ofstream cout("prefix.out");

int n,phi[1000005],rasp,t;
string s;

int main()
{
    cin>>t;
    while(t--){
        cin>>s;
        phi[0]=-1;
        n=s.size();
        for(int i=1;i<n;i++){
            int x=i-1;
            while(s[phi[x]+1]!=s[i] && phi[x]!=-1)
                x = phi[x];
            if(s[phi[x]+1]==s[i])
                phi[i]=phi[x]+1;
            else
                phi[i]=-1;
        }
        rasp=0;
        for(int i=n-1;i>=0;i--){
                if(phi[i]!=-1 && (i+1)%(i-phi[i])==0){
                    rasp=i+1;
                    break;
                }
        }
        cout<<rasp<<'\n';
    }
    return 0;
}