Pagini recente » Cod sursa (job #59560) | Cod sursa (job #3169924)
#include <bits/stdc++.h>
#ifdef LOCAL
#define in cin
#define out cout
#endif
#define int int64_t
using namespace std;
#ifndef LOCAL
ifstream in("fact.in");
ofstream out("fact.out");
#endif
bool countt(int maxx,vector<pair<int,int>> bases,int q)
{
for(auto i:bases)
{
int cnt=0;
int base1=i.first;
while(base1<=maxx)
{
cnt+=maxx/base1;
base1*=i.first;
}
if(cnt<i.second*q)return 0;
}
return 1;
}
bool verif(int n,int zeros)
{
int cnt2=0;
int base2=2;
while(base2<=n)
{
cnt2+=n/base2;
base2*=2;
}
int cnt5=0;
int base5=5;
while(base5<=n)
{
cnt5+=n/base5;
base5*=5;
}
return min(cnt2,cnt5)==zeros;
}
signed main()
{
int p=10,q;in>>q;
int st = 1, dr = __LONG_LONG_MAX__/2;
vector<pair<int,int>> bases;
bases.push_back({2,1});
bases.push_back({5,1});
while (st<dr)
{
int mid=(st+dr)/2;
if(countt(mid,bases,q))
{
dr=mid;
}
else
{
st=mid+1;
}
}
if(verif(st,q))out<<st;
else out<<-1;
}