Cod sursa(job #2233639)

Utilizator _ruthhhhhCapris Ruth _ruthhhhh Data 23 august 2018 19:24:54
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

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

int v[100000002];
int p;

int cautarebinara(int p)
{
    int x = 1;
       while(x < p)
        x *= 5;
    x /= 5;
    int stanga = 1, dreapta = 5 * p + 1, mijloc = -1, nr = 0;
    while(stanga <= dreapta)
    {
        nr = 0;
        mijloc = (stanga + dreapta) / 2;
        int j = 1;
        while(j <= mijloc)
            j *= 5;
        j /= 5;
        for(int i = 5; i <= j; i *= 5)
        {
            nr = nr + (mijloc / i);
        }
        if(nr == p)
            return mijloc - mijloc % 5;
        if(nr < p)
            stanga = mijloc + 1;
        if(nr > p)
            dreapta = mijloc - 1;
    }
    return -1;
}

int main()
{
       fin >> p;
       if(p == 0)
       {
           fout << 1;
           return 0;
       }
       if(p < 5)
       {
           fout << p * 5;
           return 0;
       }
       if(p == 5)
       {
           fout << -1;
           return 0;
       }
    fout << cautarebinara(p);
       return 0;
}