Cod sursa(job #733517)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 12 aprilie 2012 13:01:58
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <cstring>
using namespace std;

const int N=1000005;
int p[N];
char s[N];

ifstream in("prefix.in");
ofstream out("prefix.out");

int prefix(char s[])
{
    memset(p,0,sizeof(p));
    int n=strlen(s+1);
    p[0]=-1;
    for (int i=2;s[i];i++)
        for (int j=p[i-1];j>=0;j=p[j])
            if (s[j+1]==s[i])
            {
                p[i]=j+1;
                break;
            }
    for (int i=n;i;i--)
        if (p[i] && i%(i-p[i])==0)
            return i;
    return 0;
}

int main()
{
    int t;
    in>>t;
    while (t--)
    {
        in>>s+1;
        out<<prefix(s)<<"\n";
    }
    return 0;
}