Pagini recente » Cod sursa (job #358108) | Istoria paginii runda/proba123451/clasament | Cod sursa (job #1152562) | Cod sursa (job #2470109) | Cod sursa (job #2918502)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int findTrailingZeros(int n)
{
int cnt = 0;
for (int i = 5; n/i>=1; i*=5)
cnt += n/i;
return cnt;
}
int fact(int p)
{
if (p==0)
return 1;
long int a = 0, b = 10000000000; int ok = 0; int mij; int mid;
while (a<=b && !ok)
{
mij = (a+b)/2;
mid = findTrailingZeros(mij);
if (mid == p)
ok = 1;
else if (mid < p)
a = (a+b)/2 + 1;
else
b = (a+b)/2 - 1;
}
if (ok)
{
do{
--mij;
mid = findTrailingZeros(mij);
}while (mid!=p-1);
return mij+1;
}
return -1;
}
int main()
{
int p;
fin >> p;
fout << fact(p);
}