 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find ways an Integer can be expressed as sum of n-th power of unique natural numbers in C++
In this tutorial, we are going to write a program that find the number of ways a integer can be expressed as sum of given n-th power of unique numbers.
We have two integers number and power. And we need to find in how many ways can we represent the given number as sum of n-th power of unique natural numbers. Let's see an example.
Input − number = 50, power = 2
Output − 3
There is only possible way we can write 4 as sum of 2 powers.
We will be using recursion to solve the problem. Let's see the steps to solve the problem.
- Initialize the number and power. 
- Write a recursive function with a suitable name. It accepts number, power and i as arguments. 
- If the number is less than zero or pow(i, power) is greater than number, then return 0. 
- If the number is zero or pow(i, power) is equal to the number, then return 1. 
-  We have two recursive calls for the functions to compute the total number of ways - Increment the i. 
- In the first recursive call, check for the numbers less than given number. 
- In the second recursive call, check for the given number. 
 
Example
Let's see the code.
#include <bits/stdc++.h> using namespace std; int findPossibleWaysCount(int number, int power, int i = 1) {    if(number < 0 || number < pow(i, power)) {       return 0;    }    if(number == 0 || number == pow(i, power)) {       return 1;    }    return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1); } int main() {    // initializing the number and power    int number = 50, power = 2;    cout << findPossibleWaysCount(number, power) << endl;    return 0; }  Output
If you run the above code, then you will get the following result.
3
Conclusion
If you have any queries in the tutorial, mention them in the comment section.
