Cod sursa(job #432407)

Utilizator alex_dincaDinca Alexandru-Nicolae - UPB alex_dinca Data 2 aprilie 2010 12:34:33
Problema Factorial Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>

int nz(int n){
    return (int)n/5+(int)n/25+(int)n/125+(int)n/625+(int)n/3125+(int)n/15625;
}

int main (){
    long p, t, st, dr, m, gasit=0;
    FILE *f=fopen("fact.in", "r");
    fscanf(f, "%ld", &p);
    fclose(f);
    st=0; dr=1000000000L;
    while (st<dr && !gasit) {
          m = st + (dr - st) / 2;
          t = nz(m);
          if (t == p) {
             gasit = 1;
             break;
             }
          else if (t < p) st = m + 1;
               else dr = m - 1 ;
          }
    FILE *g=fopen("fact.out", "w");
    if (!gasit) fprintf(g, "-1\n");
    else {
         while (nz(m-1) == p) m--;
         fprintf(g, "%ld\n", m);
         }
    fclose(g);
    return 0;
}