在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 次浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告