Cod sursa(job #19950)

Utilizator ilarionilarion goe ilarion Data 20 februarie 2007 13:18:17
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#include<iostream>
#include <vector>

using namespace std;

#define inputfile "reguli.in"
#define outputfile "reguli.out"

int main() {
  long N,K,i,j;
  int periodic;
  ifstream in(inputfile);
  ofstream out(outputfile);

  in>>N;
  vector <long> x(N);
  for (long i = 0; i<N; i++) in>>x[i];
  in.close();

  for (long i = N-1; i>=1; i--) x[i]-=x[i-1];

  //BOOL periodic;
  K = 1;
  do{
     periodic = 1;
     while((K<N)&&(x[1]!=x[1+K])) K++;
     if(K==N) {K--;break;}
     for(i=1;((i<=K)&&(periodic));i++){
       for(j=i+K;((j<N)&&(x[i]==x[j]));j+=K);
       if(j<N) {periodic = 0;K++;}
     }
  }while(!periodic);
  out<<K<<endl;
  for(i=1;i<=K;i++)
    out<<" "<<x[i];
  out.close();
  //system("PAUSE");
  return 0;
}