描述
给出一个整数n,小明想找到一个最小的整数x,使得x同时满足如下条件:
1.x>=n。
2.存在两个非负整数a和b,使得满足x = a*a*a + a*a*b + a*b*b + b* b*b。
请你帮帮忙。
输入
一行,一个整数n,0<=n<=10^18。
输出
一个整数,表示满足条件的最小x。
用例输入 1
9
用例输出 1
15
提示
【样例解释】
当a=2, b=1时,x=15,满足x>=9,且x=15已经是最小的满足条件的了。
话不多说,代码奉上
#include<bits/stdc++.h>
#define happy using namespace std;
#define end return 0;
#define main int main()
#define ll long long
#define sc scanf
#define pr printf
happy
ll n,k,mi=1e18;
ll find(ll x,ll y)
{
return x*x*x+x*x*y+x*y*y+y*y*y;
}
main
{
sc("%lld",&n);
for(ll a=0;a<=1e6;a++)
{
ll L=-1,R=1e6+1,mid;
while(L+1<R)
{
mid=(L+R)/2;
k=find(mid,a);
if(k>=n)R=mid;
else L=mid;
}
mi=min(mi,find(R,a));
}
pr("%lld",mi);
end
}
仅供参考