2 solutions
-
1
解题报告
撰写人: ༺༺劳༒大༻༻
题意分析
找到一个最小的整数x, 使得x同时满足如下条件: (1)x >=n。 (2)存在两个非负整数a和b,使得满足x = aaa + aab + abb + b* b*b。
解题思路
二分
解题反思
二分
参考程序
#include<bits/stdc++.h> using namespace std; long long n,x,ans=1e18+1; long long check(long long x,long long y){ return x*x*x+x*x*y+x*y*y+y*y*y; } int main(){ cin>>n; for(long long i=0;i<=pow(n,1.0/3.0)+1;i++){ long long l=0,r=pow(n,1.0/3.0)+1; while(l<=r){ long long mid=(l+r)/2; if(check(mid,i)>=n){ r=mid-1; ans=min(ans,check(mid,i)); } else l=mid+1; } } cout<<ans; return 0; } -
-1
C++ :
#include<bits/stdc++.h> using namespace std; long long n,x,ans=1e19; int main() { cin>>n; for(long long i=0;i<=1000000;i++){ long long L=0,R=1000001,M; while(L+1<R) { M=(L+R)/2; x=i*i*i+i*i*M+M*M*i+M*M*M; if(x>=n) R=M; else L=M; } ans=min(ans,i*i*i+i*i*R+R*R*i+R*R*R); } cout<<ans; return 0; }
- 1
Information
- ID
- 736
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- # Submissions
- 7
- Accepted
- 3
- Uploaded By