Cod sursa(job #2059711)

Utilizator julianvladucuVladucu Iuliu Cristian julianvladucu Data 7 noiembrie 2017 15:31:52
Problema Prefix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define max 1000001
using namespace std;

int n,k,mx;
char s[max];
int pr[max];
int main()
{
    ifstream f("prefix.in");
    ofstream g("prefix.out");
    f>>n;
    for(int i=0;i<n;i++)
    {
        f>>(s+1);
        k=mx=0;
        memset(pr,0,max);
        pr[1]=0;
        for(int i=2;i<=strlen(s+1);i++)
        {
            while(k>0 && s[k+1]!=s[i])
                k=pr[k];
            if(s[k+1]==s[i])
                k++;
            pr[i]=k;
        }
        int j;
        for(j=strlen(s+1);j>1;j--)
            if(pr[j] && j%(j-pr[j])==0)
            {
                g<<j<<endl;
                break;
            }
        if(j==1)
            g<<0<<endl;
    }
    return 0;
}