Cod sursa(job #1575046)

Utilizator BrandonChris Luntraru Brandon Data 21 ianuarie 2016 08:15:45
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;

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

int p, n = 1;

void read()
{
    cin >> p;
}

int count_0(int n)
{
    int cnt = 0;
    while(n > 1)
    {
        cnt += n / 5;
        n /= 5;
    }
    return cnt;
}

int bin_search(int l, int r, int target)
{
    int med, ans;
    while(l <= r)
    {
        med = (l + r) / 2;
        if(target <= count_0(med))
        {
            r = med - 1;
            ans = med;
        }
        else
        {
            l = med + 1;
        }
    }
    return ans;
}

void solve()
{
    while(count_0(n) < p)
    {
        n *= 2;
    }
    n = bin_search(n / 2, n, p);
}

void print()
{
    if(n == 0)
    {
        ++n;
    }
    if(count_0(n) == p)
    {
        cout << n << "\n";
    }
    else
    {
        cout << "-1";
    }
}

int main()
{
    read();
    solve();
    print();
    return 0;
}