Cod sursa(job #2470952)

Utilizator vladth11Vlad Haivas vladth11 Data 9 octombrie 2019 21:32:55
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;
int pi[1000001];
int main()
{
    ifstream cin("prefix.in");
    ofstream cout("prefix.out");
    int t;
    cin >> t;
    while(t--){
        string s;
        cin >> s;
        int i = 0;
        int n = s.size();
        for(i = 1;i < n;i++){
            int j = pi[i - 1];
            while(j > 0 && s[i] != s[j]){
                j = pi[j-1];
            }
            if(s[i] == s[j])
                j++;
            pi[i] = j;
        }
        for(i = n - 1;i >= 0;i--){
            if(pi[i] && (i + 1) % (i + 1 - pi[i]) == 0)
            {
                cout << i + 1 << "\n";
                break;
            }
        }
        if(i == -1)
            cout << "0\n";
    }
    return 0;
}