Cod sursa(job #58522)

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

using namespace std;

#define Nmax 500500

unsigned v[Nmax];

#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, aux;

  cit(n)

  cit(v[0]);
  tmp = v[0];
  
  for(i=1;i<n;++i)
   {
    cit(v[i])
    aux = v[i];
    v[i] -= tmp;
    tmp = aux;
   }

  v[0] = 0;

  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("%d\n",v[j]);
   
  return 0;
 }