Cod sursa(job #1823972)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 7 decembrie 2016 08:38:58
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<bits/stdc++.h>
#define maxN 1000005
using namespace std;
int urm[maxN],m,sol,n;
char s[maxN];
void GetPrefix()
{
    int k=0;
    urm[1]=0;
    for(int i=2;i<=m;i++)
    {
        while(k>0 && s[i]!=s[k+1]) k=urm[k];
        if(s[i]==s[k+1]) k++;
        urm[i]=k;
        if(k && !(i%(i-k))) sol=i;
    }
}
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("\n");
        scanf("%s",s+1);
        m=strlen(s+1);
        sol=0;
        GetPrefix();
        printf("%d\n",sol);
    }
    return 0;
}