Cod sursa(job #2673945)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 18 noiembrie 2020 11:34:50
Problema Prefix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[1000009];
long long prefix[1000009],n,i,j,t;
int main()
{
        fin>>t;
    while(t--)
    {
        fin>>s;
        n=strlen(s);
        j=0;
        for(i=1;i<n;i++)
        {
            while(j>0&&s[i]!=s[j])
                j=prefix[j-1];
            if(s[i]==s[j])
                j++;
            prefix[i]=j;
        }
        long long perioada=0,l=0;
        for(i=0;i<n;i++)
            if(prefix[i]!=0)
                if(prefix[i]==1)
                    perioada=i;
                else
                    if(prefix[i]%perioada==0)
                        l=i+1;
        if(l==0&&s[0]==s[1])
            l=2;
        fout<<l<<'\n';
    }
}