Cod sursa(job #1913434)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 8 martie 2017 12:52:27
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<cstdio>
#include<cstring>
using namespace std;


int l,t,i,j,k,um[1000005];
char s[1000005];

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);

    scanf("%d",&t);

    for(i=1;i<=t;i++)
    {
        scanf("%s",s);
        l=strlen(s);
        k=0; um[1]=0;
        for(j=2;j<=l;j++)
        {
            while(k>0&&s[k]!=s[j-1]) k=um[k];
            if(s[k]==s[j-1]) k++;
            um[j]=k;
        }
        for(j=l;j>=1;j--)
        {
            if(um[j]!=0&&(j%(j-um[j])==0))
            {
                    printf("%d\n",j);
                    break;
            }
            if(j==1) printf("%d\n",0);
        }
    }


    return 0;
}