二分答案,发现最大数一定是 xk3 ,所以枚举立方数,看有多少个,累加即可。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n;
ll calc(ll x){
ll res=0;
for(ll i=2;i;++i){
ll t=i*i*i;if(t>x) break;
res+=x/t;
}return res;
}
int main(){
scanf("%lld",&n);
ll l=1,r=1LL<<55;
while(l<=r){
ll mid=(l+r)/2;
if(calc(mid)>=n) r=mid-1;
else l=mid+1;
}if(calc(r+1)!=n) puts("-1");
else printf("%lld\n",r+1);
return 0;
}