用 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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.