Cod sursa(job #2792837)

Utilizator vladutzu_finutzuVlad Cacenschi vladutzu_finutzu Data 2 noiembrie 2021 12:54:06
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("fact.in");
ofstream cout("fact.out");
int p;

long long howMany(int putere, long long n)
{
    long long sol = 0, x=putere;
    while(x <= n)
        sol += n/x, x *= putere;
    
    return sol;
}

int main(int argc, const char * argv[]) {
    cin>>p;
    
    if(p == 0)
    {
        cout<<1;
        return 0;
    }
    
    long long l=1, r=LONG_LONG_MAX, mid, sol = 0;
    
    while(l <= r)
    {
        mid = (l+r)/2;
        long long putere = min(howMany(2, mid), howMany(5, mid));
        
        if(putere < p)
            l = mid+1;
        
        else if(putere == p)
            sol = mid, r = mid-1;
        
        else r = mid-1;
    }
    
    cout<<sol<<'\n';
    
    return 0;
}