Cod sursa(job #2324200)

Utilizator gabiluciuLuciu Gabriel gabiluciu Data 20 ianuarie 2019 13:27:53
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <time.h>
#include <cmath>
using namespace std;
#define nl '\n'
template<class a>
void print(a v) {
    //for_each(all(v), [](auto x) { cout << x; });
}
int main() {
    ios_base::sync_with_stdio(false);
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    clock_t tStart = clock();
    int p,n;
    cin >> p;
    if(p<=4){
        if(!p) cout << 1;
        else
        cout << 5*p;
        return 0;
    }
    int st = 0, dr = 5*p;
    while (st<dr){
        int m = (st+dr)/2/5;
        m *= 5;
        int nr = 0;

        for(int i=1;pow(5,i)<=m;++i){
            nr += m/pow(5,i);
        }
        if(nr == p){
            cout << m;
            return 0;
        }
        //cout << st << ' ' << m << ' ' << dr << ' ' << nr << nl;
        if(st == m+1 || dr == m-1) break;
        if(nr<p){
            st = m+1;
        } else dr = m-1;
    }
    cout << -1;
    //printf("\nTime taken: %.2fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
}