Cod sursa(job #1808074)
Utilizator | Cristian Osiac osiaccr | Data | 17 noiembrie 2016 12:03:57 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <fstream>
#define DEF 2000000000
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int p, i, mij, st, dr;
int f (int x){
int nr = 0;
int a = 5;
while (a <= x){
nr += x/a;
a *= 5;
}
return nr;
}
int main (){
fin>>p;
st = 1;
dr = DEF;
while (st <= dr){
mij = (st + dr) / 2;
if (p > f(mij)){
st = mij + 1;
}
else{
dr = mij - 1;
}
}
if (f(st) == p){
fout<<st;
} else fout<<"-1";
return 0;
}