Cod sursa(job #2913319)
| Utilizator | Data | 13 iulie 2022 21:14:15 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.69 kb |
#include <fstream>
#define DR (1 << 29)
using namespace std;
ifstream cin("fact.in");
ofstream cout ("fact.out");
int cate_zero(int n){
int nr = 0;
while (n >=5)
{
nr+= (n/5);
n /=5;
}
return nr;
}
int caut_binara(int p){
int st = 1, dr = DR, rez = DR+1;
while (st <= dr){
int mij = (st + dr)/2;
if (cate_zero(mij) >= p)
{
rez = mij;
dr = mij-1;
}
else
{
st = mij+1;
}
}
return rez;
}
int main(){
int n,p;
cin >> p;
n = caut_binara(p);
if (cate_zero(n) != p)
n = -1;
cout << n;
}
