题目链接
题意
有不等式y⋅x3≤ n,已知y为正整数,x为大于1的正整数,问当x和y的解数量刚好为m的时候n的最小值,如果不存在输出 -1。
思路
- 利用二分求解答案,对端点中点进行判断,判断x和y解的数量
参考代码
#include<bits/stdc++.h>
using namespace std;
long long aa[1000010];
int num=0;
long long m;
long long judge(long long n)
{
long long re=0;
for(int i=1; i<=num; i++)
{
if(aa[i]>n)
break;
re+=n/aa[i];
}
return re;
}
int main()
{
for(long long i=2; i*i*i<=1e16+10; i++)
{
aa[++num]=i*i*i;
}
while(cin>>m)
{
long long l=1,r=1e16+100,ans=1e16+100;
while(l<=r)
{
long long mid=(l+r)/2;
long long tmp=judge(mid);
if(tmp==m)
ans=min(mid,ans);
if(judge(mid)>=m)
{
r=mid-1;
}
else
{
l=mid+1;
}
}
if(ans!=1e16+100)
cout<<ans<<endl;
else cout<<-1<<endl;
}
}