2 solutions

  • 1
    @ 2025-12-27 11:43:20

    解题报告

    撰写人: ༺༺劳༒大༻༻

    题意分析

    找到一个最小的整数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
      @ 2025-12-3 8:19:18

      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