Cod sursa(job #1696533)

Utilizator andreinmAndrei andreinm Data 29 aprilie 2016 12:48:18
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;

int P;

int numZ(int x)
{
    int i, ans = 0;

    for (i = 5; i <= x; i *= 5)
        ans += (x / i);

    return ans;
}

int BinarySearch(int P)
{
    int left = 1, right = 5*P, mid, x, ans = -1;

    if (!P) return 1;

    while (left <= right) {
        mid = left + (right - left)/2;
        x = numZ(mid);
        if (x == P) {
            ans = mid;
            right = mid - 1;
        }
        else if (x > P) right = mid - 1;
        else left = mid + 1;
    }

    return ans;
}

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

    cin >> P;
    cout << BinarySearch(P);

    cin.close();
    cout.close();

    return 0;
}