Cod sursa(job #1365790)

Utilizator robertstrecheStreche Robert robertstreche Data 28 februarie 2015 15:38:14
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cstring>

#define NMAX 1000005

using namespace std;

char c,a[NMAX];
int i,nr,teste,phi[NMAX];

inline void prefix()
{
    for (int i=0;i<=nr;i++)
       phi[i]=0;
    int k=0;
    for (int i=2;i<=nr;i++)
     {
         while (k && a[k+1]!=a[i])
           k=phi[k];
         if (a[k+1]==a[i])
           k++;
         phi[i]=k;
     }
}
int main()
{
   ifstream f("prefix.in");
   ofstream g("prefix.out");

   f>>teste;

   for (;teste;teste--)
    {
        nr=0;
        f>>(a+1);
        nr=strlen(a+1);
        prefix();
        for (i=nr;i>=1;i--)
           if (phi[i] && i%(i-phi[i])==0)
            {
               g<<i<<'\n';
               break;
            }
        if (i==0)
         g<<0<<'\n';
    }
}