Cod sursa(job #1097633)
| Utilizator | Data | 3 februarie 2014 18:33:42 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <fstream>
#define MAX 500000000
using namespace std;
long p;
char ok=0;
int fz(int k){
long m=5,z=0;
while(k/m!=0){
z+=k/m;
m*=5;
}
return z;
}
int bin_search(long l,long r){
if(l>r) return -1;
else{
long c=(l+r)/2;
if(fz(c)<p) bin_search(c+1,r);
else
if(fz(c)>p) bin_search(l,c-1);
else
return c;
}
}
int main(){
ifstream f("fact.in");
ofstream g("fact.out");
f>>p;
long n=bin_search(0,MAX);
while(fz(n-1)==p){
n=n-1;
}
g<<n;
}
