Cod sursa(job #502146)
| Utilizator | Data | 17 noiembrie 2010 21:20:52 | |
|---|---|---|---|
| Problema | Factorial | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <stdio.h>
using namespace std;
#define inf 2000000000
#define pt(i) (1<<(i))
unsigned long p;
unsigned long ok ( unsigned long x)
{
unsigned long i, nr5 = 0;
for (i = 5; i <= x; i *= 5)
nr5 += x / i;
if (nr5 <= p)
return 1;
return 0;
}
int main ()
{
unsigned long k = 0; int i;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d", &p);
for (i = 30; i >= 0; --i)
if ( k+pt(i)<=inf && ok(k+pt(i)) )
k += pt(i);
printf("%d", k-4);
return 0;
}
