Cod sursa(job #2537659)

Utilizator marius004scarlat marius marius004 Data 3 februarie 2020 20:53:41
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
// incerc sa vad de ce solutia precedenta nu dadea solutia optima
#include <fstream>

std::ifstream f("fact.in");
std::ofstream g("fact.out");

long long n;

long long Count0(long long n){
    
    long long power = 5;
    long long sol = 0;
    
    while(power <= n){
        sol += n / power;
        power *= 5;
    }
    
    return sol;
}

long long search(long long n){
    
    long long left = 1;
    long long right = 5 * n;
    long long sol = -1;
    
    while(left <= right){
          
        long long mid = (left + right) / 2;
          
        if(Count0(mid) >= n){
            right = mid - 1;
            sol = mid;
        }else{
            left = mid + 1;
        }
    }
    
    return sol;
}

int main(){
    
    f >> n;
    
    if(n == 0){
        g << 1;
        return 0;
    }
    
    long long s = search(n);
    
    while(Count0(s - 1) == n && s > 1)
        s--;
    
    if(Count0(s) != n)
        g << -1;
    else
        g << s;
    
    return 0;
}