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 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)!.
Below is the implementation of above approach:
c++
// 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 Code int main() { int n = 3 ; int k = 3 ; int ans = nCr(n + k - 1 , k) + nCr(k - 1, n - 1); cout << ans ; return 0 ; } // This code is contributed // by ANKITRAI1 |
Java
// Java program for above implementation import 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 Code public static void main (String[] args) { int n = 3 ; int k = 3 ; int ans = nCr(n + k - 1 , k) + nCr(k - 1 , n - 1 ); System.out.println(ans) ; } } // This code is contributed // by anuj_67 |
Python3
# 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 variables n = 3 # sum of n variables = k k = 3 # find number of solutions ans = nCr(n + k - 1 , k) + nCr(k - 1 , n - 1 ) print (ans) # This code is contributed # by ChitraNayal |
C#
// C# program for above implementation using 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 Code public static void Main () { int n = 3 ; int k = 3 ; int ans = nCr(n + k - 1 , k) + nCr(k - 1, n - 1); Console.Write(ans) ; } } // This code is contributed // by ChitraNayal |
PHP
<?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 ) + nCr( $k - 1, $n - 1); print ( $ans ); // This code is contributed // by mits ?> |
11.0
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.
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.