Cod sursa(job #2150781)

Utilizator andreeainfo_dAndreea Dutulescu andreeainfo_d Data 3 martie 2018 19:38:23
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;
int nrt,l,n,phi1[1000005],k,i,poz;
char a[1000005];
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&nrt);
    for(l=1;l<=nrt;l++)
    {
        gets(a+1);
        n=strlen(a+1);
         k=0;
        phi1[1]=0;
        for(i=2;i<=n;i++)
        {
            while(k>0&&a[k+1]!=a[i])
                k=phi1[k];
            if(a[k+1]==a[i])k++;
            phi1[i]=k;
        }
        for(i=1;i<=n;i++)
        {
            if(phi1[i]>0&&i%(i-phi1[i])==0)poz=i;
        }
        printf("%d",poz);
       /// for(i=1;i<=n;i++)
        ///    printf("%d ",phi1[i]);
        printf("\n");
    }
    return 0;
}