Cod sursa(job #3259771)

Utilizator lessan98leonard savu lessan98 Data 27 noiembrie 2024 19:36:20
Problema Factorial Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *r, *w;
    r = fopen("fact.in", "r");
    w = fopen("fact.out", "w");

    int p;
    fscanf(r, "%d%d", &p);

    if(p == 0){
        fprintf(w, "1");
        return 0;
    }

    //picked dr as of having 10^8 zeros for dr!
    int st = 1, dr = 400000015, m, pow_5, power;
    while(st <= dr){
        m = (st + dr)/2;
        pow_5 = 0;
        power = 5;
        while(m >= power){
            pow_5 += m/power;
            power *= 5;
        }
        if(pow_5 == p){
            fprintf(w, "%d", m - m%5);
            return 0;
        } else if (pow_5 > p){
            dr = m - 1;
        } else {
            st = m + 1;
        }
    }

    fprintf(w, "-1");
    return 0;
}