https://atcoder.jp/contests/abc246/tasks/abc246_d
题目大意:
给定一个数字N,让我们求出X,这个X要满足X>=N,并且X内部可以有一对(a,b)满足a^3 + a^2*b + b^2*a +b^3。
找出最小的这个X。
输入
9
输出
15
输入
0
输出
0
输入
999999999989449206
输出
1000000000000000000
这个题目要看清楚事件复杂度
我们已知的是N在1e18的范围内,所以3倍下来,0=<a,b<=1e6;
纯纯暴力
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2002;
LL n,minn=1e18;
LL cal(LL a,LL b)
{
return a*a*a+a*a*b+a*b*b+b*b*b;
}
int main()
{
cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
LL T=1;
//cin>>T;
while(T--)
{
cin>>n;
//i从头到尾,j从尾到头
//先j往左进行缩小范围,然后i往右进行扩大范围
for(int i=0,j=1e6;i<1e6;i++)
{
while(cal(i,j)>=n&&j>=0)//当前i和j都大于0的时候,并且这两个数字计算出来的结果是会比n更大的
{
minn=min(minn,cal(i,j));//不断进行比较压缩
j--;
}
}
cout<<minn<<endl;
}
return 0;
}
标签:Function,ABC,1e18,minn,LL,cout,cin,246,暴力 From: https://www.cnblogs.com/Vivian-0918/p/16751226.html看佬儿写了个二分,二分好像快一些