Cod sursa(job #1453066)

Utilizator lflorin29Florin Laiu lflorin29 Data 22 iunie 2015 18:10:11
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define pii pair <int, int>
#define ll long long
#define NX 10000000000
using namespace std;
inline int getpp (int x){
    int nr = 0, k;
    for (k = 5 ; k <=x; k*=5)
        nr+=x/k;
    return nr;
}
int typf (int X){
unsigned ll st = 0 , dr = NX, mid;
    while (st <= dr) {
            mid = st + ((dr-st)>>1);
            if (getpp(mid) == X) return mid;
    if (getpp(mid) < X)
        st = mid + 1;
    else dr = mid - 1;
    }
    return -1;
}
int main()
{
    freopen ("fact.in", "r", stdin);
    freopen ("fact.out", "w", stdout);
    int nz;
    scanf ("%d", &nz);
    if (nz == 0 ){
            printf ("1");
    return 0;
    }
else {
                    int y = typf(nz);
                    if (y == -1){ printf ("%d", -1); return 0;}
  while (getpp(y-1) == nz || getpp(y) > nz ) y--;
printf ("%d", y);}
    return 0;
}