Cod sursa(job #611539)
Utilizator | Data | 1 septembrie 2011 21:26:32 | |
---|---|---|---|
Problema | Factorial | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.49 kb |
#include <fstream>
std::ifstream f;
std::ofstream g;
int n_zero(int n){
int x=5,p=0;
while(n/x>0){p+=n/x;x*=5;}
return p;
}
int cb(int p){
int n=0,k;
int st=0,dr=0x17d78410,mid;
while(st<dr){
mid=(st+dr)/2;
k=n_zero(mid);
if(p>k)st=mid+1;else dr=mid-1; };
return mid;
}
int main(){
int p,n;
f.open("fact.in");
g.open("fact.out");
f>>p;
n=cb(p);
g<<(n_zero(n)==p?n:-1);
}