Number of integral solutions of the equation x1 + x2 +.... + xN = k

30 Jun, 2022
Given N and K. The task is to count the number of the integral solutions of a linear equation having N variable as given below:  
x1 + x2+ x3...+ xN-1+...+xN = K
Examples:  
Input: N = 3, K = 3
Output: 10
Explaination: Possible solutions are: (1,1,1),(1,0,2),(2,0,1),(1,2,0),(2,1,0),(0,1,2)
(0,2,1),(3,0,0),(0,3,0),(0,0,3).

Input: N = 2, K = 2
Output: 3
 
Approach: This problem can be solved using the concept of Permutation and Combination. Below are the direct formulas for finding non-negative and positive integral solutions respectively. 
Number of non-negative integral solutions of equation x1 + x2 + ...... + xn = k is given by (n+k-1)! / (n-1)!*k!. Number of positive integral solutions of equation x1 + x2 + ..... + xn = k is given by (k-1)! / (n-1)! * (k-n)!.  
Note  here that the non-negative integral solutions already include the positive integral solutions. Therefore, there is no need to add the number of positive integral solutions to the answer.Below is the implementation of above approach: 
c++
Java
Python3
C#
PHP
Javascript
// C++ program for above implementation#include<iostream> using namespace std ; int nCr(int n, int r){    int fac[100] = {1} ;         for (int i = 1 ; i < n + 1 ; i++)    {        fac[i] = fac[i - 1] * i ;    }         int ans = fac[n] / (fac[n - r] *                        fac[r]) ;    return ans ;} // Driver Codeint main(){    int n = 3 ;    int k = 3 ;         int ans = nCr(n + k - 1 , k);    cout << ans ;         return 0 ;} // This code is contributed// by ANKITRAI1
// Java program for above implementationimport java.io.*; class GFG{static int nCr(int n, int r){    int fac[] = new int[100] ;    for(int i = 0; i < n; i++)    fac[i] = 1;         for (int i = 1 ; i < n + 1 ; i++)    {        fac[i] = fac[i - 1] * i ;    }         int ans = fac[n] / (fac[n - r] *                        fac[r]);    return ans ;} // Driver Codepublic static void main (String[] args){    int n = 3 ;    int k = 3 ;         int ans = nCr(n + k - 1 , k);         System.out.println(ans) ;}} // This code is contributed// by anuj_67
# Python implementation of# above approach # Calculate nCr i.e binomial# cofficent nCr = n !/(r !*(n-r)!)def nCr(n, r):     # first find factorial    # upto n    fac = list()    fac.append(1)    for i in range(1, n + 1):        fac.append(fac[i - 1] * i)     # use nCr formula    ans = fac[n] / (fac[n - r] * fac[r])    return ans # n = number of variablesn = 3 # sum of n variables = kk = 3 # find number of solutionsans = nCr(n + k - 1, k) print(ans) # This code is contributed# by ChitraNayal
// C# program for above implementationusing System; class GFG{static int nCr(int n, int r){    int[] fac = new int[100] ;    for(int i = 0; i < n; i++)    fac[i] = 1;         for (int i = 1 ; i < n + 1 ; i++)    {        fac[i] = fac[i - 1] * i ;    }         int ans = fac[n] / (fac[n - r] *                        fac[r]);    return ans ;} // Driver Codepublic static void Main (){    int n = 3 ;    int k = 3 ;         int ans = nCr(n + k - 1 , k);         Console.Write(ans) ;}} // This code is contributed// by ChitraNayal
<?php// PHP implementation of above approach // Calculate nCr i.e binomial// cofficent nCr = n !/(r !*(n-r)!)function nCr($n, $r){    // first find factorial    // upto n    $fac = array();    array_push($fac, 1);    for($i = 1; $i < $n + 1; $i++)        array_push($fac, $fac[$i - 1] * $i);     // use nCr formula    $ans = $fac[$n] / ($fac[$n - $r] *                       $fac[$r]);    return $ans;} // Driver Code // n = number of variables$n = 3; // sum of n variables = k$k = 3; // find number of solutions$ans = nCr($n + $k - 1, $k); print($ans); // This code is contributed// by mits?>
<script> // Javascript program for above implementationfunction nCr(n, r){    var fac = Array(100).fill(1);         for (var i = 1 ; i < n + 1 ; i++)    {        fac[i] = fac[i - 1] * i ;    }         var ans = fac[n] / (fac[n - r] *                        fac[r]) ;    return ans ;} // Driver Codevar n = 3 ;var k = 3 ; var ans = nCr(n + k - 1 , k); document.write(ans ); // This code is contributed by noob2000.</script>
10
Applications of the above concepts:  
Number of non-negative integral solutions of equation x1 + x2 +...+ xn = k is equal to the number of ways in which k identical balls can be distributed into N unique boxes.Number of positive integral solutions of equation x1 + x2 + ... + xn = k is equal to the number of ways in which k identical balls can be distributed into N unique boxes such that each box must contain at-least 1 ball.
Number of non-negative integral solutions of equation x1 + x2 +...+ xn = k is equal to the number of ways in which k identical balls can be distributed into N unique boxes.
Number of positive integral solutions of equation x1 + x2 + ... + xn = k is equal to the number of ways in which k identical balls can be distributed into N unique boxes such that each box must contain at-least 1 ball.
 
ankthon
vt_m
ukasp
Mithun Kumar
noob2000
jatingrg2399
factorial
Permutation and Combination
Mathematical
Mathematical
factorial
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Sieve of Eratosthenes
Prime Numbers
Find minimum number of coins that make a given value
Program to find GCD or HCF of two numbers
Minimum number of jumps to reach end
Algorithm to solve Rubik's Cube
The Knight's tour problem | Backtracking-1
Program for Decimal to Binary Conversion