Cod sursa(job #58535)

Utilizator crawlerPuni Andrei Paul crawler Data 6 mai 2007 12:13:59
Problema Reguli Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <cstdio>

using namespace std;

#define Nmax 500500

long long v[Nmax],a,b;

#define dim 10000
char buf[dim];

int main()
 {
  freopen("reguli.in","r",stdin);
  freopen("reguli.out","w",stdout);


  int poz;
  #define bufer fread(buf,1,dim,stdin), poz = 0
  #define cit(x)                         \
  {                                      \
   x = 0;                                \
   while(buf[poz] < '0')                 \
    {                                    \
     ++poz;                              \
     if(poz == dim)                      \
       bufer;                            \
    }                                    \
   while(buf[poz] >= '0')                \
    {                                    \
     x = x*10 + buf[poz] - '0';          \
     if(++poz == dim)                    \
      bufer;                             \
    }                                    \
  }
  bufer;

  int i,j,n,tmp;

  cit(n)

  cit(a);
  
  for(i=1;i<n;++i)
   {
    cit(b)
    v[i] = b-a;
    a = b;
   }

  for(i=1;i<n;++i)
   {
    for(j=i+1;j<n;j++)
     {
      tmp = j % i;
      if(!tmp) tmp = i;
      if(v[j] != v[tmp])
       break;
     }
    if(j == n)
     break;
   }

  printf("%d\n",i);

  
  for(j=1;j<=i;++j)
   printf("%lld\n",v[j]);
   
  return 0;
 }