Cod sursa(job #1891292)

Utilizator Storm_FireFox1Matei Gardus Storm_FireFox1 Data 23 februarie 2017 21:30:15
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

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

int p;

int main()
{
    int l = 1, nr0, nr1, nr2, x, r = 1000000000, middle;
    fin >> p;
    while(l <= r)
    {
        middle = l + (r - l) / 2;
        nr0 = 0;
        x = middle;
        while(x >= 5)
        {
            nr0 += x / 5;
            x /= 5;
        }
        if(nr0 >= p)
        {
            r = middle - 1;
        }
        if(nr0 < p)
        {
            l = middle + 1;
        }
    }
    x = middle;
    nr0 = 0;
    while(x >= 5)
    {
        nr0 += x / 5;
        x /= 5;
    }
    x = middle + 1;
    while(x >= 5)
    {
        nr2 += x / 5;
        x /= 5;
    }
    x = middle - 1;
    while(x >= 5)
    {
        nr1 += x / 5;
        x /= 5;
    }
    if(nr1 != p && nr0 != p && nr2 != p)
    {
        middle = -1;
    }
    else if(middle == 1)
    {
        middle = middle;
    }
    else if(nr1 == p)
    {
        middle--;
    }
    else if(nr2 == p && nr0 != p)
    {
        middle++;
    }
    fout << middle;
    return 0;
}