Cod sursa(job #2592697)

Utilizator GligarEsterabadeyan Hadi Gligar Data 2 aprilie 2020 09:09:11
Problema Factorial Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream fin("fact.in");
ofstream fout("fact.out");

const int nmax=16000000;

int v[nmax+1];

int zero(int p){
    int a=0;
    for(int i=5;i<=p;i*=5){
        a+=p/i;
    }
    return a;
}

int main (){
    int p;
    fin>>p;
    if(p==0){
        fout<<1;
        return 0;
    }
    int p2=1;
    while(p2<=p){
        p2*=2;
    }
    p2/=2;
    for(int i=1;i<=p;i++){
        v[i]=5*i;
    }
    int sol=0;
    for(int i=p2;i>0;i/=2){
        if(sol+i<=p&&zero(v[sol+i])<=p){
            sol+=i;
            if(zero(v[sol])==p){
                fout<<v[sol]<<"\n";
                return 0;
            }
        }
    }
    fout<<"-1\n";
    return 0;
}