Cod sursa(job #2491786)
Utilizator | Data | 13 noiembrie 2019 09:43:10 | |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <fstream>
using namespace std;
ifstream in ("fact.in");
ofstream out ("fact.out");
int fact(long long a)
{
long long cnt=0,pow=5;
while (pow<=a)
{
cnt+=a/pow;
pow*=5;
}
return cnt;
}
long long cautare (long long val)
{
long long pos=0;
for (long long msk=1<<30;msk;msk/=2)
{
if (fact(pos+msk)<=val)
pos+=msk;
}
if (fact(pos)!=val)
return 1;
while (fact(pos)==val)
pos--;
pos++;
return pos;
}
int main()
{
long long n;
in>>n;
if (n==0)
out<<1;
else
out<<cautare(n);
return 0;
}