计算将数字表示为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
以下程序中使用的方法如下-
在这种方法中,我们首先检查数字本身是否是任何numpower的幂。如果是,则返回方式为1,如果不是,则递归检查num幂+(num+1)幂。
取两个整数num和power作为输入。
功能sum_of_powers(intnum,intpower,intval)取一个num并返回表示“num”的方式计数,即将自然数加到给定幂的和。
进行check=(num-pow(val,power))。如果check为0,则返回1,因为数字本身为valpower。
如果校验小于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