Given two integers x and n, we need to find number of ways to express x as sum of n-th powers of unique natural numbers. It is given that 1 <= n <= 20.

Examples:

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

We use recursion to solve the problem. We first check one by one that the number is included in summation or not.

## C++

`// C++ program to count number of ways ` `// to express x as sum of n-th power ` `// of unique natural numbers. ` `#include <bits/stdc++.h> ` `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; ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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. ` |

*chevron_right*

*filter_none*

## 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. ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP program to count number of ways ` `// to express x as sum of n-th power ` `// of unique natural numbers. ` ` ` `// num is current num. ` `function` `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. ` `function` `countWays(` `$x` `, ` `$n` `) ` `{ ` ` ` `return` `countWaysUtil(` `$x` `, ` `$n` `, 1); ` `} ` ` ` `// Driver code ` `$x` `= 100; ` `$n` `= 2; ` `echo` `(countWays(` `$x` `, ` `$n` `)); ` ` ` `// This code is contributed by Ajit. ` `?> ` |

*chevron_right*

*filter_none*

Output:

3

This article is contributed by **Anjali**. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Minimum tiles of sizes in powers of two to cover whole area
- Count ways to obtain given sum by repeated throws of a dice
- Count of Ways to obtain given Sum from the given Array elements
- Count number of ways to partition a set into k subsets
- Count number of ways to reach a given score in a Matrix
- Count number of ways to arrange first N numbers
- Count the number of ways to construct the target string
- Count the number of ways to divide N in k groups incrementally
- Count of ways to split a given number into prime segments
- Number of ways to split N as sum of K numbers from the given range
- Number of ways to divide a given number as a set of integers in decreasing order
- Count ways to reach a score using 1 and 2 with no consecutive 2s
- Count ways to reach the Nth stair using any step from the given array
- Count ways to change direction of edges such that graph becomes acyclic
- Count total ways to reach destination from source in an undirected Graph
- Count ways to arrange N distinct objects if all clockwise arrangements are considered the same
- Count of ways to traverse a Matrix according to given conditions
- Find ways an Integer can be expressed as sum of n-th power of unique natural numbers
- Print all possible ways to write N as sum of two or more positive integers
- Number of ways to reach the end of matrix with non-zero AND value