Cod sursa(job #1159587)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 29 martie 2014 18:40:05
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define lmax 1000003
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
 int n,k;
 char a[lmax]; int p[lmax];

int main()
{ int i,t;
    f>>t; f.getline(a,2);

  for(;t;t--)
   {
    f>>(a+1); a[0]=' ';
    n=strlen(a)-1;

   k=0;
   for(i=2;i<=n;i++)
   {
     while (k && a[k+1]!=a[i])
      k=p[k];

      if (a[k+1]==a[i]) k++;

      p[i]=k;
   }
      for(i=n;i>=1;i--)
       if (p[i] && (p[i]%(i-p[i]))==0)
        { g<<i<<"\n"; break;}

      if (!i) g<<"0\n";
   }
    return 0;
}