Cod sursa(job #432431)

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

long long nz(long long n){
    return n/5+n/25+n/125+n/625+n/3125+n/15625+n/78125+n/390625+n/1953125+n/9765625+n/48828125+n/244140625;
}

int main (){
    long long p, t, st, dr, m, gasit=0;
    FILE *f=fopen("fact.in", "r");
    fscanf(f, "%lld", &p);
    fclose(f);
    st=0; dr=1000000000;
    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, "%lld\n", m);
         }
    fclose(g);
    //printf("%lld\n", m);fflush(stdin); getchar();
    return 0;
}