Cod sursa(job #1926853)

Utilizator Rebeca19Rebeca Ciuciu Rebeca19 Data 14 martie 2017 18:49:59
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>

using namespace std;
using ull = unsigned long long;

ull ZFACT(ull nr){
    ull num = 0;
    for(int i = 5; nr/i >= 1; 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);
    if(ZFACT(sol) == p) out << sol;
    else out << -1;
    return 0;
}