Cod sursa(job #368193)

Utilizator juniorOvidiu Rosca junior Data 24 noiembrie 2009 08:55:56
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
//problema 1 factorial
#include <iostream>
#include <fstream>

using namespace std;

ifstream fi("fact.in");
ofstream fo("fact.out");

int main() {
  long capat , inceput ,  p , n , k ;
  fi >> n;
  //capat = 400000015;
  capat = 500000015;
  p = capat / 2 ;
  inceput = 1;
  while (p) {
    p = (inceput + capat) / 2;
    p -= p % 5;
    k = p / 5 + p / 25 + p / 125 + p / 625 + p / 3125 + p / 15625 + p / 78125 + p / 390625 + p / 1953125 + p / 9765625 + p / 48828125 + p / 244140625 + p / 1220703125;
    if (k == n)
      break;
    if (k > n) {
      capat = p;
    }
    if (k < n) {
      if (inceput == p) {
        p = -1;
        break;
      }
      inceput = p;
    }
    if (inceput == capat) {
      p = -1;
      break;
    }
  }
  if (n != 0)
    fo << p;
  else
    fo << 1;
  fi.close();
  fo.close();
}