Cod sursa(job #481188)

Utilizator APOCALYPTODragos APOCALYPTO Data 30 august 2010 20:43:27
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
using namespace std;
#include<iostream>
#include<fstream>
ofstream fout("reguli.out");
int pi[500005],a[500005],N;
void solve()
{
 int i,k=0,L;
 pi[1]=0;

 for(i=2;i<=N;i++)
 {

     while(k>0&&a[i]!=a[k+1]) k=pi[k];
     if(a[i]==a[k+1]) k++;
     pi[i]=k;
 }
  for(L=1;L<=N;L++)
    if(pi[N]==N%L&&N-L%pi[N-L]==0)
     {
         fout<<L<<"\n";
         break;
     }
}

void cit()
{int i,x,y;
    ifstream fin("reguli.cpp");
    fin>>N;
    fin>>x;
    for(i=1;i<=N;i++)
    {
        fin>>y;
        a[i]=y-x;
        x=y;

    }
    fin.close();
}

int main()
{
    cit();
    solve();
    fout.close();
    return 0;
}