Cod sursa(job #1317300)

Utilizator acomAndrei Comaneci acom Data 14 ianuarie 2015 19:48:01
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<cstring>
using namespace std;
#define NMAX 1000005
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n,m,k,p[NMAX];
char a[NMAX];
int main()
{
    int i,j;
    fin>>n; fin.get();
    for (j=1;j<=n;++j)
    {
        fin>>(a+1);
        m=strlen(a+1);
        for (k=0,i=2;i<=m;++i)
        {
            while (a[k+1]!=a[i] && k>0)
                k=p[k];
            if (a[k+1]==a[i])
                ++k;
            p[i]=k;
        }
        for (i=m;i>0;--i)
            if (i%(i-p[i])==0 && p[i])
                break;
        fout<<i<<"\n";
    }
    return 0;
}