给定两个数字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