Cod sursa(job #2077541)

Utilizator moltComan Calin molt Data 28 noiembrie 2017 10:58:35
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

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

int f(int nr)
{
    int k = 0;
    while (nr >= 5)
    {
        k += (nr /= 5);
    }
    return k;
}

/*int caut_bin(int p)
{
    int a = 1,b = pow(10,8) + 1,sol = -1;
    int mij;
    while (a <= b)
    {
        mij = (a + b) / 2;
        int pos = f(mij);
        if (pos > p)
            b = mij - 1;
        else if (pos == p)
        {
            sol = mij;
            b = mij - 1;
        }
        else
            a = mij + 1;
    }
    return sol;
}

int r,p,pas,lim = pow(10,8);*/

int caut_bin(int p)
{
    int r = 0;
    int  pas = 1 << 28;
    //for (int i = 1;i <= 8;++i)
         //lim *= 10;
    while (pas != 0)
    {
        if (f(r + pas) < p)
            r += pas;
        pas >>= 1;
    }
    r++;
    return r;
}

int p;

int main()
{
    in>>p;
    int r = caut_bin(p);
    if (f(r) != p)
    {
        r = -1;
    }
    out<<r;
    return 0;
}