Cod sursa(job #2279986)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 10 noiembrie 2018 10:48:27
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream> // reimplementare pentru lab ASD
#include <algorithm>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long N, P, d, aux, mask, Max;
long long check (long long x) {
    long long deimp = 5, sol = 0;
    while (x >= deimp) {
        sol += x / deimp;
        deimp *= 5;
    }
    return sol;
}
int cautbin (long long P) {
    long long sol = 0;
    while (mask) {
        long long test = sol + mask;
        if (test <= Max) {
            long long val = check(test);
            if (val < P) sol = test;
        }
        mask >>= 1;
    }
    long long val = check(sol + 1);
    return val == P ? sol + 1: -1;
}
int main() {
    f >> P;
    Max = 5 * P;
    mask = 1;
    while (mask <= Max)
        mask <<= 1;
    mask >>= 1;
    g << cautbin(P);
    return 0;
}