Cod sursa(job #2957245)

Utilizator SG2021StancuGeorge SG2021 Data 22 decembrie 2022 03:37:18
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>

using namespace std;
typedef long long int ll;
ifstream f("fact.in");
ofstream g("fact.out");
ll ans = -1;
ll countzeros(ll& num){
    ll div = 5;
    ll cnt = 0;
    while(num / div > 0){
        cnt += num / div;
        div*=5;
    }
    return cnt;
}
int main(){
    ll val;
    while(f >> val){
        ll begin = 0;
        ll end = 10e9;
        ans = -1;
        if(val == 0){
            g << "1" << endl;
            continue;
        }else{
            while (begin <= end) {
                ll mid = begin + (end - begin) / 2;
                ll zeros = countzeros(mid);
                if (zeros == val) {
                    ans = mid;
                    // daca as pune break mi ar pune prima valoare pe care o gaseste care indeplineste conditia

                    end = mid - 1; // nu se termina programul chiar daca gaseste prima valoare care respecta conditia
                    // (noua ne trebuie cel mai mic posibil)

                } else if (zeros > val) {
                    end = mid - 1;
                } else {
                    begin = mid + 1;
                }

            }
        }
        g << ans << endl;
    }

}