📜  方程x + y + z <= n的解数

📅  最后修改于: 2021-04-28 00:01:17             🧑  作者: Mango

给定四个数字x,y,z,n。任务是找到方程x + y + z <= n的解数,以使0 <= x <= X,0 <= y <= Y,0 <= z <=Z。

例子:

Input: x = 1, y = 1, z = 1, n = 1
Output: 4

Input: x = 1, y = 2, z = 3, n = 4
Output: 20

方法:让我们显式地迭代x和y的所有可能值(使用嵌套循环)。对于x和y的一个这样的固定值,问题减少到存在z的多少个值,使得z <= n – x – y和0 <= z <=Z。

以下是查找解决方案数量所需的实现:

C++
// CPP program to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
#include 
using namespace std;
 
// function to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
int NumberOfSolutions(int x, int y, int z, int n)
{
    // to store answer
    int ans = 0;
 
    // for values of x
    for (int i = 0; i <= x; i++) {
 
        // for values of y
        for (int j = 0; j <= y; j++) {
 
            // maximum possible value of z
            int temp = n - i - j;
 
            // if z value greater than equals to 0
            // then only it is valid
            if (temp >= 0) {
 
                // find minimum of temp and z
                temp = min(temp, z);
                ans += temp + 1;
            }
        }
    }
 
    // return required answer
    return ans;
}
 
// Driver code
int main()
{
    int x = 1, y = 2, z = 3, n = 4;
 
    cout << NumberOfSolutions(x, y, z, n);
 
    return 0;
}


Java
// Java program to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
 
import java.io.*;
 
class GFG {
 
// function to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
static int NumberOfSolutions(int x, int y, int z, int n)
{
    // to store answer
    int ans = 0;
 
    // for values of x
    for (int i = 0; i <= x; i++) {
 
        // for values of y
        for (int j = 0; j <= y; j++) {
 
            // maximum possible value of z
            int temp = n - i - j;
 
            // if z value greater than equals to 0
            // then only it is valid
            if (temp >= 0) {
 
                // find minimum of temp and z
                temp = Math.min(temp, z);
                ans += temp + 1;
            }
        }
    }
 
    // return required answer
    return ans;
}
 
       // Driver code
    public static void main (String[] args) {
     
    int x = 1, y = 2, z = 3, n = 4;
    System.out.println( NumberOfSolutions(x, y, z, n));
 
    }
}
 
// this code is contributed by anuj_67..


Python 3
# Python3 program to find the number 
# of solutions for the equation
# x + y + z <= n, such that
# 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
 
# function to find the number of solutions
# for the equation x + y + z <= n, such that
# 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
def NumberOfSolutions(x, y, z, n) :
 
    # to store answer
    ans = 0
 
    # for values of x
    for i in range(x + 1) :
 
        # for values of y
        for j in range(y + 1) :
 
            # maximum possible value of z
            temp = n - i - j
 
            # if z value greater than equals 
            # to 0 then only it is valid
            if temp >= 0 :
 
                # find minimum of temp and z
                temp = min(temp, z)
                ans += temp + 1
 
    # return required answer
    return ans
 
# Driver code
if __name__ == "__main__" :
 
    x, y, z, n = 1, 2, 3, 4
     
    # function calling
    print(NumberOfSolutions(x, y, z, n))
 
# This code is contributed by ANKITRAI1


C#
// C# program to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
using System;
 
public class GFG{
     
     
// function to find the number of solutions for
// the equation x + y + z <= n, such that
// 0 <= x <= X, 0 <= y <= Y, 0 <= z <= Z.
static int NumberOfSolutions(int x, int y, int z, int n)
{
    // to store answer
    int ans = 0;
 
    // for values of x
    for (int i = 0; i <= x; i++) {
 
        // for values of y
        for (int j = 0; j <= y; j++) {
 
            // maximum possible value of z
            int temp = n - i - j;
 
            // if z value greater than equals to 0
            // then only it is valid
            if (temp >= 0) {
 
                // find minimum of temp and z
                temp = Math.Min(temp, z);
                ans += temp + 1;
            }
        }
    }
 
    // return required answer
    return ans;
}
 
// Driver code
 
     
     
    static public void Main (){
         
    int x = 1, y = 2, z = 3, n = 4;
 
    Console.WriteLine( NumberOfSolutions(x, y, z, n));
 
    }
}
 
// This code is contributed by anuj_67..


PHP
= 0)
            {
 
                // find minimum of temp and z
                $temp = min($temp, $z);
                $ans += $temp + 1;
            }
        }
    }
 
    // return required answer
    return $ans;
}
 
// Driver code
$x = 1; $y = 2;
$z = 3; $n = 4;
 
echo NumberOfSolutions($x, $y, $z, $n);
 
// This code is contributed
// by Akanksha Rai(Abby_akku)
?>


Javascript


输出:
20