Cod sursa(job #1046307)
| Utilizator | Data | 2 decembrie 2013 20:24:59 | |
|---|---|---|---|
| Problema | Factorial | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.73 kb |
#include<fstream>
using namespace std;
ifstream fi("fact.in");
ofstream fo("fact.out");
long long st,dr,mid;
int p;
bool posibil(long long n){
long long k=0,q=1;
while(q<=n) {
q*=5;
k+=(n/q);
}
if (k==p) return true;
else return false;
}
int main(){
fi>>p;
if(p==0) fo<<1;
else {
st=1; dr=6*p;
while(st!=dr){
mid=(st+dr)/2;
if (posibil(mid)) dr=mid;
else st=mid+1;
}
if (posibil(st)) fo<<st;
else fo<<-1;
}
fi.close();
fo.close();
return 0;
}
