Cod sursa(job #3250033)

Utilizator vlad7654vladimir manescu vlad7654 Data 19 octombrie 2024 09:32:11
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> prefix_function(string s) {
    int n = (int)s.length();
    vector<int> pi(n);
    for (int i=1;i<n; i++) {
        int j=pi[i-1];
        while(j>0 and s[i] != s[j]){
            j=pi[j-1];
        }
        if(s[i] == s[j]){
            j++;
        }
        pi[i]=j;
    }
    return pi;
}
void solve(){
    string s;
    fin>>s;
    int ans=0;
    vector<int> kmp=prefix_function(s+'#');
    for(int i=1;i<kmp.size();i++){
        if(kmp[i] and (i+1)%(i+1-kmp[i])==0){
            ans=i;
        }
    }
    if(ans==0){
        fout<<0<<'\n';
    }else{
        fout<<ans+1<<'\n';
    }
}
int main(){
    int t;
    fin>>t;
    while(t--){
        solve();
    }
}