Cod sursa(job #1881323)

Utilizator robx12lnLinca Robert robx12ln Data 16 februarie 2017 13:08:56
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int st, dr, mid, P;

int check( int x ){

    int nr = 0;
    int sol = 0;

    for( int i = 1; i <= 30; i++ ){

        nr += x / (1<<i);

    }

    int p = 5;

    for( int i = 1; i <= 13; i++ ){
        sol += x / p;
        p *= 5;
    }

    return min( sol, nr );

}

int main(){

    fin >> P;

    st = 1;
    dr = 2000000000;

    while( st <= dr ){

        mid = ( st + dr ) / 2;

        if( check( mid ) < P ){
            st = mid + 1;
        }else{
            dr = mid - 1;
        }

    }

    if( check(st) == P ){
        fout << st;
    }else{
        fout << -1;
    }

}