Cod sursa(job #731355)
| Utilizator | Data | 7 aprilie 2012 22:13:49 | |
|---|---|---|---|
| Problema | Factorial | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<cstdio>
using namespace std;
int f(int n)
{
int ok=0;
for(;n!=0;)
{
ok+=n/5;
n/=5;
}
return ok;
}
int check(int a,int b,int p)
{
if(a>b) return -1;
int c=(a+b)/2;
int q=f(c);
if(q==p) return c;
if(q<p) return check(c+1,b,p);
else return check(a,c-1,p);
}
int main()
{
int p,n;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&p);
n=check(0,1<<31-1,p);
n=n-n%5;
printf("%d",n);
return 0;
}
