Pagini recente » Cod sursa (job #31384) | Cod sursa (job #1170106) | Cod sursa (job #1082332) | Cod sursa (job #2907707) | Cod sursa (job #2190369)
#include <iostream>
#include <cstdio>
#define fs fscanf
#define fp fprintf
using namespace std;
FILE *f, *g;
int p;
typedef long long lint;
int works(lint x, int p)
{
///return -1; // daca x! are mai putine zerouri
///return 1; // daca x! are mai multe zerouri
lint nr0 = x / 5;
nr0 += x / 25;
if(nr0 > p)
return 1;
if(nr0 < p)
return -1;
if(nr0 == p)
return 0;
}
lint bsearch(int x)
{
lint p = 1LL << 40;
lint r = 0;
while(p)
{
if(works(5*(p + r), x) < 0)
r+=p;
p = p >> 1;
}
if(works((r+1) * 5, x) == 0)
return (r+1)*5;
else
return -1;
}
int main()
{
f = fopen("fact.in", "r");
g = fopen("fact.out", "w");
fs(f, "%d", &p);
if(p == 0)
fp(g, "1");
else
{
lint rez = bsearch(p);
fp(g, "%lld", rez);
}
fclose(f);
fclose(g);
return 0;
}