Cod sursa(job #2739958)

Utilizator experiment322Alexandru-Damian Manea experiment322 Data 10 aprilie 2021 18:20:46
Problema Factorial Scor 25
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>

#define IFILE "fact.in"
#define OFILE "fact.out"

int is_file_present(const char *filename) {
  FILE *file;

  if (NULL != (file = fopen(filename, "r"))) {
    fclose(file);
    return 1;
  }

  return 0;
}

void setup_io() {
  if (is_file_present(IFILE)) {
    freopen(IFILE, "r", stdin);
    freopen(OFILE, "w", stdout);
  }
}

int main(void) {
  int n, m, p, z, no_2, no_5, min_no;

  setup_io();

  scanf("%d", &p);

  n = 2;
  z = 0;
  no_2 = 0;
  no_5 = 0;
  while (z < p) {
    m = n;
    while (m > 0) {
      if (m % 2 == 0) {
        m /= 2;
        no_2 += 1;
      } else if (m % 5 == 0) {
        m /= 5;
        no_5 += 1;
      } else {
        break;
      }
    }

    if (no_2 != 0 && no_5 != 0) {
      if (no_2 < no_5) {
        min_no = no_2;
      } else {
        min_no = no_5;
      }

      z += min_no;
      no_2 -= min_no;
      no_5 -= min_no;
    }

    n += 1;
  }

  n -= 1;

  printf("%d\n", z == p ? n : -1);

  return 0;
}