Cod sursa(job #178821)

Utilizator alecmanAchim Ioan Alexandru alecman Data 15 aprilie 2008 10:27:21
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>

#define INPUT "12perm.in"
#define OUTPUT "12perm.out"
#define MODULO 1048576

FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");

long N;

void readValues()
{
  fscanf(fin, "%ld", &N);
}

void solveFunction()
{
  long A, B, C, poz, T, D;

  A = 1;
  B = 2;
  C = 6;
  D = 12;
  poz = 4;

  switch(N)
  {
    case 1: fprintf(fout, "%ld\n", A); break;
    case 2: fprintf(fout, "%ld\n", B); break;
    case 3: fprintf(fout, "%ld\n", C); break;
    case 4: fprintf(fout, "%ld\n", D); break;
  }

  A = 0;

  for(long i = 4; i < N; ++i)
  { 
    A = 1;
    T = (D + B + 2 * ( poz - 1)) & (MODULO - 1);
    B = C;
    C = D;
    D = T;
    ++poz;
  }
  
  if(A)
    fprintf(fout, "%ld\n", T);
}

int main()
{
  readValues();

  solveFunction();

  fclose(fin);
  fclose(fout);

  return 0;
}