用 C++ 统计 a^3 + b^3 = N 的 (a, b) 对数


给定一个数字 N,目标是找到有序的正数对,使得它们的立方和为 N。

我们将通过寻找方程 a3 + b3 = N 的解来实现。其中 a 不大于 N 的立方根,b 可以计算为 (N-a3) 的立方根。

让我们通过例子来理解。

输入 

N=35

输出 

Count of pairs of (a,b) where a^3+b^3=N: 2

解释 

Pairs will be (2,3) and (3,2). 23+33=8+27=35

输入 

N=100

输出 

Count of pairs of (a,b) where a^3+b^3=N: 0

解释 

No such pairs possible.

下面程序中使用的方案如下:

  • 我们取整数 N。

  • 函数 cubeSum(int n) 获取 n 并返回立方和为 n 的有序对的数量。

  • 将初始变量 count 设置为 0(表示对数)。

  • 使用 for 循环遍历以查找 a。

  • 从 a=1 开始到 a<=cbrt(n)(n 的立方根)。

  • 计算 b 的立方为 n-pow(a,3)。

  • 计算 b 为 cbrt(bcube)。

  • 如果 pow(b,3)==bcube,则 count 加 1。

  • 所有循环结束后,count 将包含此类对的总数。

  • 返回 count 作为结果。

示例

 在线演示

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int cubeSum(int n){
   int count = 0;
   for (int a = 1; a < cbrt(n); a++){
      int bcube=n - (pow(a,3));
      int b = cbrt(bcube);
      if(pow(b,3)==bcube)
         { count++; }
   }
   return count;
}
int main(){
   int N = 35;
   cout <<"Count of pairs of (a,b) where a^3+b^3=N: "<<cubeSum(N);
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

Count of pairs of (a,b) where a^3+b^3=N: 2

更新于:2020-10-31

301 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告