Cod sursa(job #2862168)

Utilizator MafteiAlbertAlexandruMaftei Albert-Alexandru MafteiAlbertAlexandru Data 4 martie 2022 23:10:10
Problema Factorial Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
uint64_t P;
uint64_t maxl=0x6765c793fa10079d;
uint64_t nr0(uint64_t nr)
{
    uint64_t r=0;
    for(uint64_t i=5;true;i*=5)
    {
        r+=nr/i;
        if(nr<i||i==maxl)break;
    }
    return r;
}
int main()
{
    fin>>P;
    uint64_t st=0,dr=0xFFFFFFFFFFFFFFFF;
    uint64_t mij =st+(dr-st+1)/2;
    while(st<dr)
    {
        mij=st+(dr-st)/2;
        uint64_t r=nr0(mij);
        if(r<P)
        {
            st=mij+1;
        }else if(r>P)
        {
            dr=mij;
        }else{
            dr=mij;
        }
    }
    mij=st+(dr-st+1)/2;
    if(nr0(mij)==P)
    fout <<mij;
    else fout << -1;
    return 0;
}