Pagini recente » Borderou de evaluare (job #1036301) | Cod sursa (job #2736040) | Cod sursa (job #1195046) | Cod sursa (job #536680) | Cod sursa (job #2005162)
#include <stdio.h>
#define NMAX 1000000000000000000
long long legendre (long long n, long long p ) {
long long cp ;
cp = 0 ;
while (p < n ) {
cp += (n / p ) ;
p = p * p ;
}
return cp ;
}
int main() {
FILE *fin, *fout ;
fin = fopen ("fact.in", "r" ) ;
fout = fopen ("fact.out", "w" ) ;
long long p, res, st, dr, pivot, last ;
long long n ;
fscanf (fin, "%lld", &p ) ;
st = 1 ;
dr = NMAX ;
while (st <= dr ) {
pivot = ( st + dr ) / 2 ;
res = legendre (pivot, 5 ) ;
if (res < p ) {
st = pivot + 1;
}
else {
dr = pivot - 1 ;
}
if (res == p && pivot < last )
last = pivot ;
}
fprintf (fout, "%lld", last ) ;
return 0;
}