Given a number n (number of variables) and val (sum of the variables), find out how many such nonnegative integral solutions are possible.
Examples :
Input : n = 5, val = 1 Output : 5 Explanation: x1 + x2 + x3 + x4 + x5 = 1 Number of possible solution are : (0 0 0 0 1), (0 0 0 1 0), (0 0 1 0 0), (0 1 0 0 0), (1 0 0 0 0) Total number of possible solutions are 5 Input : n = 5, val = 4 Output : 70 Explanation: x1 + x2 + x3 + x4 + x5 = 4 Number of possible solution are: (1 1 1 1 0), (1 0 1 1 1), (0 1 1 1 1), (2 1 0 0 1), (2 2 0 0 0)........ so on...... Total numbers of possible solutions are 70
Asked in: Microsoft Interview
1. Make a recursive function call to countSolutions(int n, int val)
2. Call this Solution function countSolutions(n-1, val-i) until n = 1 and val >=0 and then return 1.
Below is the implementation of above approach:
C++
// CPP program to find the numbers // of non negative integral solutions #include<iostream> using namespace std; // return number of non negative // integral solutions int countSolutions( int n, int val) { // initialize total = 0 int total = 0; // Base Case if n = 1 and val >= 0 // then it should return 1 if (n == 1 && val >=0) return 1; // iterate the loop till equal the val for ( int i = 0; i <= val; i++){ // total solution of equations // and again call the recursive // function Solutions(variable,value) total += countSolutions(n-1, val-i); } // return the total no possible solution return total; } // driver code int main(){ int n = 5; int val = 20; cout<<countSolutions(n, val); } //This code is contributed by Smitha Dinesh Semwal |
Java
// Java program to find the numbers // of non negative integral solutions class GFG { // return number of non negative // integral solutions static int countSolutions( int n, int val) { // initialize total = 0 int total = 0 ; // Base Case if n = 1 and val >= 0 // then it should return 1 if (n == 1 && val >= 0 ) return 1 ; // iterate the loop till equal the val for ( int i = 0 ; i <= val; i++) { // total solution of equations // and again call the recursive // function Solutions(variable, value) total += countSolutions(n - 1 , val - i); } // return the total no possible solution return total; } // Driver code public static void main(String[] args) { int n = 5 ; int val = 20 ; System.out.print(countSolutions(n, val)); } } // This code is contributed by Anant Agarwal. |
Python3
# Python3 program to find the numbers # of non negative integral solutions # return number of non negative # integral solutions def countSolutions(n, val): # initialize total = 0 total = 0 # Base Case if n = 1 and val >= 0 # then it should return 1 if n = = 1 and val > = 0 : return 1 # iterate the loop till equal the val for i in range (val + 1 ): # total solution of equations # and again call the recursive # function Solutions(variable,value) total + = countSolutions(n - 1 , val - i) # return the total no possible solution return total # driver code n = 5 val = 20 print (countSolutions(n, val)) |
C#
// C# program to find the numbers // of non negative integral solutions using System; class GFG { // return number of non negative // integral solutions static int countSolutions( int n, int val) { // initialize total = 0 int total = 0; // Base Case if n = 1 and val >= 0 // then it should return 1 if (n == 1 && val >= 0) return 1; // iterate the loop till equal the val for ( int i = 0; i <= val; i++) { // total solution of equations // and again call the recursive // function Solutions(variable, value) total += countSolutions(n - 1, val - i); } // return the total no possible solution return total; } // Driver code public static void Main() { int n = 5; int val = 20; Console.WriteLine(countSolutions(n, val)); } } // This code is contributed by Anant vt_m. |
PHP
<?php // PHP program to find the numbers // of non negative integral solutions // return number of non negative // integral solutions function countSolutions( $n , $val ) { // initialize total = 0 $total = 0; // Base Case if n = 1 and // val >= 0 then it should // return 1 if ( $n == 1 && $val >=0) return 1; // iterate the loop // till equal the val for ( $i = 0; $i <= $val ; $i ++) { // total solution of equations // and again call the recursive // function Solutions(variable,value) $total += countSolutions( $n - 1, $val - $i ); } // return the total // no possible solution return $total ; } // Driver Code $n = 5; $val = 20; echo countSolutions( $n , $val ); // This code is contributed by nitin mittal. ?> |
Javascript
<script> // JavaScript program to find the numbers // of non negative integral solutions // return number of non negative // integral solutions function countSolutions(n, val) { // initialize total = 0 let total = 0; // Base Case if n = 1 and val >= 0 // then it should return 1 if (n == 1 && val >= 0) return 1; // iterate the loop till equal the val for (let i = 0; i <= val; i++) { // total solution of equations // and again call the recursive // function Solutions(variable, value) total += countSolutions(n - 1, val - i); } // return the total no possible solution return total; } // Driver code let n = 5; let val = 20; document.write(countSolutions(n, val)); </script> |
Output :
10626
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.