Cod sursa(job #1793402)

Utilizator dcutitoiuCutitoiu Adrian-Nicolae dcutitoiu Data 30 octombrie 2016 23:16:36
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <string>
#include <iterator>
#include <numeric>
#include <string>
#include <set>
#include <map>
#include <queue>

using namespace std;

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

int GetZeros(int number)
{
    int total = 0;
    while(number >= 5)
    {
        total += number / 5;
        number /= 5;
    }

    return total;
}

int main()
{
    int number;
    in >> number;

    long long left = 0;
    long long right = 400000000;

    long long mid;
    bool found = false;
    while(left < right)
    {
        mid = (left + right) >> 1;
        int zeros = GetZeros(mid);

        if(number < zeros)
            right = mid - 1;
        else if (number > zeros)
            left = mid + 1;
        else
        {
            found = true;
            break;
        }
    }

    if(found)
        out << mid - mid % 5 + (mid < 5);
    else
        out << -1;

    return 0;
}