Pagini recente » Cod sursa (job #2691785) | Cod sursa (job #925866) | Cod sursa (job #2235789) | Monitorul de evaluare | Cod sursa (job #363729)
Cod sursa(job #363729)
#include <fstream>
using namespace std;
int f(int n);
int bin(int p , int a , int b);
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
int P;fin >> P;
if (!P)
{
fout << 1;
}
else if (P < 6249998)
{
fout << bin(P,0,25000000);
}
else if (P < 12499999)
{
fout << bin(P,25000000,50000000);
}
else
{
fout << bin(P,50000000,1000000000);
}
return 0;
}
int bin(int p , int a , int b)
{
int mid = (a+b)/2;
if (a > b)
{
return -1;
}
int value = f(mid);
if(value == p)
{
return (mid - (mid % 5));
}
else if(value < p)
{
return bin(p,mid + 1 , b);
}
else
{
return bin(p,a,mid - 1);
}
}
int f(int n)
{
int p = 0;
while (n)
{
p += n / 5;
n /= 5;
}
return p;
}