Cod sursa(job #1919411)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 9 martie 2017 19:19:23
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#include <cstring>

using namespace std;

char sir[1000010];
int d[1000010];

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    int t;
    scanf("%d\n",&t);
    for(int test=1;test<=t;test++)
    {
        gets(sir+1);
        int l=strlen(sir+1),k=0;
        for(int i=2;i<=l;i++)
        {
            while(k>0 && sir[i]!=sir[k+1]) k=d[k];
            if(sir[i]==sir[k+1]) k++;
            d[i]=k;
        }
        int sol=0;
        for(int i=l;i>=1;i--)
            if(i%(i-d[i])==0 && d[i]>0) {sol=i;break;}
        printf("%d\n",sol);
    }
    return 0;
}