Cod sursa(job #1117817)

Utilizator nataliagutanuNatalia Gutanu nataliagutanu Data 23 februarie 2014 20:20:58
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;
int main()
{
    ifstream f ("fact.in");
    ofstream g ("fact.out");
    int n, p, nfact, i, putere = 1,cnt5, cnt2,p2,p5,mid,n0=1, res=-1;
    f >> p;
    int left = 1;
    int right = 2000000000;
    while (left <= right)
    {
        mid = (left+right) / 2;

        p2 = 2;
        cnt2 =  0;
        while (p2 <= mid)
        {
            cnt2 = cnt2 + mid/p2;
            p2 = p2 * 2;
        }

        p5 = 5;
        cnt5 = 0;
        while (p5 <= mid)
        {
            cnt5 = cnt5 + mid/p5;
            p5 = p5 * 5;
        }

        int n0;
        if (cnt2 <= cnt5)  n0 = cnt2;
        if (cnt2 >= cnt5)  n0 = cnt5;

        if (n0 > p) right = mid - 1;
        if (n0 < p) left = mid + 1;
        if (n0 == p)
        {
            res = mid;
            right = mid - 1;
        }
    }
    g << res;
    return 0;
}