用 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
广告