Cod sursa(job #3204460)

Utilizator Vlad10Vlad Negut Vlad10 Data 16 februarie 2024 19:14:03
Problema Factorial Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("fact.in");
ofstream fout("fact.out");
const int NMAX=1e8;
int lagrange(int x){
    int p=5,rez=0;
    for(int i=5;i<=x;i*=5){
        rez+=x/i;
    }
    return rez;
}
int cautbin(int nrz){
    int st,dr,m,lst,ldr,lm,sol;
    st=5;
    lst=1;
    dr=NMAX;
    ldr=lagrange(dr);
    sol=NMAX;
    while(st<=dr){
        m=(st/5+dr/5)/2*5;
        lm=lagrange(m);
        if(lm==nrz)
            return m;
        else if(lm>nrz){
            sol=m;
            dr=m;
            ldr=lm;
        }else{
            st=m;
            lst=lm;
        }
    }
    return sol;
}
int n;
int main()
{
    fin>>n;
    if(n==0)
        fout<<1;
    else{
        fout<<cautbin(n);
    }
    return 0;
}