给定两个整数x和n,我们需要找到多种方法来将x表示为唯一自然数的n次幂之和。给出1 <= n <= 20。
例子:
Input : x = 100
n = 2
Output : 3
Explanation: There are three ways to
express 100 as sum of natural numbers
raised to power 2.
100 = 10^2 = 8^2+6^2 = 1^2+3^2+4^2+5^2+7^2
Input : x = 100
n = 3
Output : 1
Explanation : The only combination is,
1^3 + 2^3 + 3^3 + 4^3
我们使用递归来解决问题。我们首先一个接一个地检查数字是否包含在总和中。
C++
// C++ program to count number of ways
// to express x as sum of n-th power
// of unique natural numbers.
#include
using namespace std;
// num is current num.
int countWaysUtil(int x, int n, int num)
{
// Base cases
int val = (x - pow(num, n));
if (val == 0)
return 1;
if (val < 0)
return 0;
// Consider two possibilities, num is
// included and num is not included.
return countWaysUtil(val, n, num + 1) +
countWaysUtil(x, n, num + 1);
}
// Returns number of ways to express
// x as sum of n-th power of two.
int countWays(int x, int n)
{
return countWaysUtil(x, n, 1);
}
// Driver code
int main()
{
int x = 100, n = 2;
cout << countWays(x, n);
return 0;
}
Java
// Java program to count number of ways
// to express x as sum of n-th power
// of unique natural numbers.
public class GFG {
// num is current num.
static int countWaysUtil(int x, int n, int num)
{
// Base cases
int val = (int) (x - Math.pow(num, n));
if (val == 0)
return 1;
if (val < 0)
return 0;
// Consider two possibilities, num is
// included and num is not included.
return countWaysUtil(val, n, num + 1) +
countWaysUtil(x, n, num + 1);
}
// Returns number of ways to express
// x as sum of n-th power of two.
static int countWays(int x, int n)
{
return countWaysUtil(x, n, 1);
}
// Driver code
public static void main(String args[])
{
int x = 100, n = 2;
System.out.println(countWays(x, n));
}
}
// This code is contributed by Sumit Ghosh
Python3
# Python program to count number of ways
# to express x as sum of n-th power
# of unique natural numbers.
# num is current num.
def countWaysUtil(x,n,num):
# Base cases
val = (x - pow(num, n))
if (val == 0):
return 1
if (val < 0):
return 0
# Consider two possibilities, num is
# included and num is not included.
return countWaysUtil(val, n, num + 1) +\
countWaysUtil(x, n, num + 1)
# Returns number of ways to express
# x as sum of n-th power of two.
def countWays(x,n):
return countWaysUtil(x, n, 1)
# Driver code
x = 100
n = 2
print(countWays(x, n))
# This code is contributed
# by Anant Agarwal.
C#
// C# program to count number of ways
// to express x as sum of n-th power
// of unique natural numbers.
using System;
public class GFG {
// num is current num.
static int countWaysUtil(int x,
int n, int num)
{
// Base cases
int val = (int) (x - Math.Pow(num, n));
if (val == 0)
return 1;
if (val < 0)
return 0;
// Consider two possibilities,
// num is included and num is
// not included.
return countWaysUtil(val, n, num + 1)
+ countWaysUtil(x, n, num + 1);
}
// Returns number of ways to express
// x as sum of n-th power of two.
static int countWays(int x, int n)
{
return countWaysUtil(x, n, 1);
}
// Driver code
public static void Main()
{
int x = 100, n = 2;
Console.WriteLine(countWays(x, n));
}
}
// This code is contributed by vt_m.
PHP
Javascript
输出:
3