Cod sursa(job #1926841)

Utilizator Rebeca19Rebeca Ciuciu Rebeca19 Data 14 martie 2017 18:39:09
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <iostream>
#include <fstream>

using namespace std;
using ull = unsigned long long;

ull ZFACT(ull nr){
    int num = 0;
    for(int i = 5; nr/i; i *= 5)
        num += nr/i;
    return num;
}

ull caut(ull p){
    ull st = 0, dr = 1ULL<<63, m;
    while(st <= dr){
        m = (st + dr)/2;
        if(ZFACT(m) < p) st = m + 1;
        else dr = m - 1;
    }
    return (m % 5)? m + 1 : m;
}

int main(){
    ull p;
    ifstream in ("fact.in");
    ofstream out ("fact.out");
    in >>  p;
    if(p == 0) {out << 1; return 0;}
    ull sol = caut(p);
    out << ((ZFACT(sol) == p)? sol : -1);
    return 0;
}