Cod sursa(job #611545)
| Utilizator | Data | 1 septembrie 2011 21:36:00 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 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 st=0,dr=0x17d78410,mid,k,min=dr;
while(st<=dr){
mid=(st+dr)/2;
k=n_zero(mid);
if(p>k)st=mid+1;else dr=mid-1;
if(k==p&&mid<min)min=mid; };
return min;
}
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);
f.close();
g.close();
}
