Cod sursa(job #2663415)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 26 octombrie 2020 12:41:04
Problema Factorial Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>

int cautare(int n){
  int min, max, mij, put, e;
  min = 1;
  max = n;
  while((max - min) > 1){
    mij = (max + min) / 2;
    e = 0;
    for(put = 5; put <= mij; put *= 5){
      e = e + mij / put;
    }
    if((n - 1) < (mij + e)){
      max = mij;
    }else{
      min = mij;
    }
  }
  return min;
}

int main()
{
    FILE *fin, *fout;
    int p, i, poz, e, put;
    fin=fopen("fact.in", "r");
    fscanf(fin, "%d", &p);
    fclose(fin);
    poz = cautare(p + 1);
    e = 0;
    for(put = 5; put <= poz; put *= 5){
      e = e + (poz / put);
    }
    fout=fopen("fact.out", "w");
    if(p == 0){
      fprintf(fout, "1");
    }else{
      if((poz + e) == p){
        fprintf(fout, "%d", poz * 5);
      }else{
        fprintf(fout, "-1");
      }
    }
    fclose(fout);
    return 0;
}