3 条题解
-
2
题目大意
题目描述清楚,不做赘述
解题思路
定义 ,则有:
$$=(a+1)^{3}+(a+1)^{2}b+(a+1)b^{2}+b^{3}-a^{3}+a^{2}b+ab^{2}+b^{3}$$题目要求 ,所以 具有单调性,二分 双指针都能过
双指针代码
#include<bits/stdc++.h> using namespace std; #define int long long int n; int check(int a,int b){ return (a*a+b*b)*(a+b); } signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; int l=0,r=1e6; int ans=1e18; while(l<=r){ if(check(l,r)>=n)ans=min(check(l,r),ans),r--; else l++; } cout<<ans<<'\n'; return 0; }二分代码
#include<bits/stdc++.h> using namespace std; #define int long long int n; int check(int a,int b){ return (a*a+b*b)*(a+b); } signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; int l=0,r=1e6; int k=0; while(l<=r){ int mid=(l+r)>>1; if(mid*mid*mid>=n)k=mid,r=mid-1; else l=mid+1; } int ans=1e18; for(int i=0;i<=k;i++){ int l=i,r=k; while(l<=r){ int mid=(l+r)>>1; if(check(i,mid)>=n)ans=min(ans,check(i,mid)),r=mid-1; else l=mid+1; } } cout<<ans<<'\n'; return 0; }
信息
- ID
- 12440
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 50
- 已通过
- 11
- 上传者