在C++中尋找整數能表示為唯一自然數的n次冪之和的方法


在本教程中,我們將編寫一個程式來查詢整數可以表示為給定n次冪的唯一數字之和的方式的數量。

我們有兩個整數**number**和**power**。我們需要找到有多少種方法可以將給定的**number**表示為唯一自然數的n次冪之和。讓我們來看一個例子。

**輸入** - number = 50, power = 2

**輸出** - 3

只有一種可能的方法可以將4寫成2的冪之和。

我們將使用遞迴來解決這個問題。讓我們看看解決問題的步驟。

  • 初始化數字和冪。

  • 編寫一個具有合適名稱的遞迴函式。它接受**number**、**power**和**i**作為引數。

  • 如果**number**小於零或**pow(i, power)**大於**number**,則返回0。

  • 如果number為零或pow(i, power)等於number,則返回1。

  • 我們有兩個遞迴函式呼叫來計算總方法數。

    • 遞增**i**。

    • 在第一個遞迴呼叫中,檢查小於給定數字的數字。

    • 在第二個遞迴呼叫中,檢查給定數字。

示例

讓我們看看程式碼。

線上演示

#include <bits/stdc++.h>
using namespace std;
int findPossibleWaysCount(int number, int power, int i = 1) {
   if(number < 0 || number < pow(i, power)) {
      return 0;
   }
   if(number == 0 || number == pow(i, power)) {
      return 1;
   }
   return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1);
}
int main() {
   // initializing the number and power
   int number = 50, power = 2;
   cout << findPossibleWaysCount(number, power) << endl;
   return 0;
}

輸出

如果執行上面的程式碼,則會得到以下結果。

3

結論

如果您在本教程中還有任何疑問,請在評論區提出。

更新於:2020年12月29日

441 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.