Cod sursa(job #1183516)

Utilizator kappykkDragos kappykk Data 9 mai 2014 15:18:00
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

long long fact(long long n){
    long long x = 5,rez=0;
    while(x <= n){
        rez += n / x;
        x *=5;
    }
    return rez;
}

int main()
{
    ifstream f("fact.in");
    ofstream g("fact.out");
    long long n,p;
    f>>p;
    long long st = 1, dr = (1LL<<60), ok = 0, m;
    while(st < dr){
            m = (st + dr) / 2;
            if(p > fact(m)){
                st = m + 1;
            }
            if(p < fact(m)){
                dr = m - 1;
            }
            if(p == fact(m)){
                ok = 1;
                break;
            }
        }
    while(fact(m) >= p){
        if(fact(m) >= p)
            --m;
    }
    if(ok)
        g<<m+1;
    else
        g<<"-1";
    return 0;
}