Cod sursa(job #2410396)

Utilizator xtreme77Patrick Sava xtreme77 Data 20 aprilie 2019 00:16:04
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream cin ("fact.in");
ofstream cout ("fact.out");

long long zeros (long long n)
{
    long long put = 5;
    long long sum = 0;
    while (n / put)
        sum += n/put, put *=5;
    return sum;
}

int main() {
    long long p;
    cin >> p;
    if (p == 0)
    {
        cout << 1;
        return 0;
    }
    int answer = 0;
    /// 000000001 ; 1 << x = 2^x (la puterea, nu xor)
    /// 100000000 ; x >> y = x / (2^y) (la puterea, nu xor)
    for (int current_bit = 30; current_bit >= 0; -- current_bit)
        if (zeros(answer + (1 << current_bit)) <= p)
            answer |= (1 << current_bit);
    if (zeros(answer) == p)
        cout << answer - answer % 5 << '\n';
    else cout << -1;
    return 0;
}