Cod sursa(job #2663387)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 26 octombrie 2020 11:45:56
Problema Factorial Scor 25
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>

int put[8]={5, 25, 125, 625, 3125, 15625, 78125, 390625};

int cautare(int i){
  int min, max, mij;
  min = 0;
  max = 8;
  while((max - min) > 1){
    mij = (max + min) / 2;
    if((i % put[mij]) != 0){
      max = mij;
    }else{
      min = mij;
    }
  }
  return min;
}

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