Cod sursa(job #2016016)

Utilizator alex.cojocaruAlex Cojocaru alex.cojocaru Data 28 august 2017 14:07:14
Problema Factorial Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

#define NMAX 1000000000000000000

long long legendre (long long n, long long p ) {
  long long cp, rez ;
  cp = p ;
  rez = 0 ;
  while (cp <= n ) {
    rez += (n / cp ) ;
    cp = cp * p ;
  }
  return rez ;
}
int main() {

  FILE *fin, *fout ;
  fin = fopen ("fact.in", "r" ) ;
  fout = fopen ("fact.out", "w" ) ;

  long long p, res, st, dr, pivot, last ;
  long long n ;

  fscanf (fin, "%lld", &p ) ;

  st = 1 ;
  dr = NMAX ;
  last = -1 ;
  while (st <= dr ) {
    pivot = ( st + dr ) / 2 ;
    res = legendre (pivot, 5 ) ;
    if (res < p ) {
      st = pivot + 1;
    }
    else {
      dr = pivot - 1 ;
    }
    if (res == p && pivot < last )
      last = pivot ;
  }
  fprintf (fout, "%lld", last ) ;
  return 0;

}