计算将数字表示为C ++幂和的方法

给定两个数字num和power作为输入。目的是找到将num表示为提高到给定幂的唯一自然数之和的方式。如果num是10,幂是2,那么我们可以将10表示为12 + 32。因此共有1种方式。

例如

输入值

num=30
输出结果
用幂表示数字的方法有: 2

说明

The ways in which we can express 30 as sum of powers:
12 + 22 + 52 and 12 + 22 + 32 + 42

输入值

num=35
输出结果
用幂表示数字的方法有: 1

说明

The ways in which we can express ‘num’ as sum of powers: 22 + 32

以下程序中使用的方法如下-

在这种方法中,我们首先检查数字本身是否是任何num power的幂。如果是,则返回方式为1,如果不是,则递归检查num+(num + 1)

  • 取两个整数num和power作为输入。

  • 功能 sum_of_powers(int num, int power, int val) 取一个num并返回表示“ num”的方式计数,即将自然数加到给定幂的和。

  • 进行check =(num- pow(val, power))。如果check为0,则返回1,因为数字本身为val power

  • 如果校验小于0,则返回0。

  • 否则取temp = val + 1。

  • 返回( sum_of_powers(check, power, temp) + sum_of_powers(num, power, temp) )。

  • 最后,我们将获得回报价值的方法。

示例

#include <bits/stdc++.h>
using namespace std;
int sum_of_powers(int num, int power, int val){
   int check = (num − pow(val, power));
   if(check == 0){
      return 1;
   }
   else if(check < 0){
      return 0;
   } else {
      int temp = val + 1;
      return sum_of_powers(check, power, temp) + sum_of_powers(num, power, temp);
   }
}
int main(){
   int num = 25, power = 2;
   cout<<"用幂表示数字的方法有: "<<sum_of_powers(num, power, 1);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出-

用幂表示数字的方法有: 2

猜你喜欢