Cod sursa(job #1936514)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 23 martie 2017 10:19:41
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <cstring>
#define nmax 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char s[nmax];
int n,p[nmax];

void solve()
{
    int i,j;
    memset(s,0,sizeof(s));
    f.getline(s+1,nmax);
    p[1]=0;j=0;
    for (i=2;s[i];i++) {
        while (j&&s[i]!=s[j+1])
            j=p[j];
        if (s[i]==s[j+1])
            j++;
        p[i]=j;
    }
    n=i-1;
    for (i=n;i>=1;i--) {
        j=i-p[i];
        if (i!=j&&j&&i%j==0) {
            g<<i<<'\n';
            return;
        }
    }
    g<<0<<'\n';
}
int main()
{
    int t;
    for (f>>t,f.get();t;t--)
        solve();
    return 0;
}