Skip to content
Related Articles

Related Articles

Number of non-negative integral solutions of sum equation
  • Difficulty Level : Medium
  • Last Updated : 12 Apr, 2021

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :