Cod sursa(job #224624)

Utilizator daniel.dumitranDaniel Dumitran daniel.dumitran Data 30 noiembrie 2008 07:36:09
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>

int main() {
  FILE *f;
  int p;

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

  freopen("fact.out", "wt", stdout);
  if (!p) {
    printf("1\n");
    return 0;
  }

  long lower = 1, upper = p, middle, zeroes, temp;
  while (lower <= upper) {    
    middle = (lower + upper) / 2;
        
    zeroes = middle;
    for (temp = middle; temp >= 5;)
      zeroes += (temp /= 5);

    printf("Try %ld -> %ld\n", middle, zeroes);

    if (zeroes == p) {
      printf("%ld\n", middle * 5);
      return 0;
    }

    if (zeroes > p)
      upper = middle - 1;
    else
      lower = middle + 1;
  }

  printf("-1\n");

  return 0;
}