Pagini recente » Cod sursa (job #3219615) | Cod sursa (job #1018997) | Cod sursa (job #3151235) | Cod sursa (job #807343) | Cod sursa (job #942116)
Cod sursa(job #942116)
#include <fstream>
using namespace std;
long long fact(long long a,long long min=0,long long max=1000000000);
long long number(long long x);
int main()
{
long long a;
ifstream in("fact.in");
in>>a;
in.close();
ofstream out("fact.out");
out<<fact(a)<<"\n";
out.close();
return 0;
}
long long number(long long x)
{
long long pow5=5;
long long c=0;
while(pow5<=x)
{
c+=x/pow5;
pow5*=5;
}
return c;
}
long long fact(long long a,long long min,long long max)
{
if (a==0) return 1;
if (min>max)
{
return -1;
}
long long mid=(max+min)/2;
long long num=number(mid);
if(a==num)
{
return mid-mid%5;
}
else if (a<num)
{
return fact(a,min,mid-1);
}
else
{
return fact(a,mid+1,max);
}
}