Pagini recente » Cod sursa (job #259645) | Cod sursa (job #2579660) | Cod sursa (job #268152) | Cod sursa (job #2278925) | Cod sursa (job #942115)
Cod sursa(job #942115)
#include <fstream>
using namespace std;
long long fact(long long a,long long min=0,long long max=10000000000);
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);
}
}