Cod sursa(job #2154618)

Utilizator HuskyezTarnu Cristian Huskyez Data 7 martie 2018 09:38:37
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>

#define infile "fact.in"
#define outfile "fact.out"

using namespace std;

ifstream in(infile);
ofstream out(outfile);

int p;
int n;

int st = 0;
int dr = 1e8;

int nr5(int x)
{
    int r = 0;
    for(int i=5; i<=x; i*=5){
        r += x/i;
    }
    return r;
}

int main()
{
    in >> p;

    while(st < dr){
        int mid = (st+dr)/2;
        int exp = nr5(mid);
        if(exp == p && mid%5 == 0){
            out << mid;
            return 0;
        }
        if(exp < p){
            st = mid+1;
        }else{
            dr = mid-1;
        }
    }

    if(p == 0){
        out << '1';
    }else{
        //for(; st%5 != 0; st--);
        if(nr5(st) != p){
            out << -1;
        }else{
            out << st;
        }
    }

    return 0;
}