Cod sursa(job #2941505)

Utilizator RaresHRares Hanganu RaresH Data 17 noiembrie 2022 20:25:49
Problema Factorial Scor 95
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

#define MAXREZ 400000015

int main() {
  FILE *fin, *fout;
  int p, st, dr, mj, s, t;

  fin = fopen("fact.in", "r");
  fscanf(fin, "%d", &p);
  fclose(fin);

  st = 0;
  dr = MAXREZ + 1;
  while(dr - st > 1) {
    mj = (dr + st) / 2;
    s = 0;
    t = 5;
    while(mj / t > 0) {
      s += mj / t;
      t *= 5;
    }
    if(s > p)
      dr = mj;
    else
      st = mj;
  }
  st -= 4;

  s = 0;
  t = 5;
  while(st / t > 0) {
    s += st / t;
    t *= 5;
  }

  fout = fopen("fact.out", "w");
  if(s == p)
    fprintf(fout, "%d\n", st == 0 ? 1 : st);
  else
    fprintf(fout, "-1\n");
  fclose(fout);

  return 0;
}