C++程式:將整數表示為唯一自然數n次冪之和的方法


本文將討論一個程式,該程式用於查詢將整數(例如 X)表示為唯一自然數 n 次冪之和的方法。

例如,令 X = 100,n = 2

則有 3 種方法可以將 100 表示為自然數的平方和。

100 = 102
100 = 62 + 82
100 = 12 + 32 + 42 + 52 + 72

這可以透過遞迴輕鬆完成。我們將從 1 開始,一直到給定數字的 n 次方根。在每次執行中,我們將從給定數字中減去自然數的 n 次冪(從 1 開始),直到數字小於 0。這將給出該數字可以表示為自然數 n 次冪之和的方法。

示例

 線上演示

#include<iostream>
#include <math.h>
using namespace std;
int result = 0;
int ways(int number, int a, int init, int n){
   if (a == 0) {
      result++;
   }
   //setting the higher limit
   int max = (int)floor(pow(number, 1.0 / n));
   for (int i = init + 1; i <= max; i++) {
      //subtracting n-th power values starting from 1
      int b = a - (int)pow(i, n);
      if (b >= 0)
         ways(number, a - (int)pow(i, n), i, n);
   }
   return result;
}
int main() {
   int a = 100, n = 2;
   cout << ways(a, a, 0, n);
   return 0;
}

輸出

3

更新於:2019年10月3日

727 次瀏覽

開啟您的職業生涯

完成課程獲得認證

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