Cod sursa(job #1081774)

Utilizator raluca1234Tudor Raluca raluca1234 Data 13 ianuarie 2014 21:39:25
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

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

int n,p,i;
int MAX = 5 * 100000000;

int caut_binar(int MAX, int p)
{
    int k = 0, i, st = 1, dr = MAX;
    int m = (dr+st)/2;
    if (p == 0) return 1;
    while (k != p && st != dr)
    {
        k = 0;
        i = 5;
        while (i < m)
        {
            k += m/i;
            i *= 5;
        }
        if (k > p)
        {
            dr = m - 1;
            m = (st+dr)/2;
        }
        if (k < p)
        {
            st = m + 1;
            m = (st+dr)/2;
        }
        if (st >= dr) return -1;
    }
    st = m;
    while (k == p)
    {
        if (k != p) return st;
        k = 0;
        i = 5;
        while (i <= st)
        {
            k += st/i;
            i *= 5;
        }
        if (k == p) m = st;
        st --;
    }
    return m;
}

int main ()
{
    f >> p;
    n = caut_binar(MAX,p);
    g << n;
    f.close();
    g.close();
    return 0;
}