Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 방정식 x + y + z <=n에 대한 해의 수 찾기

<시간/>

이 글에서는 x+y+z<=n 방정식의 해의 개수를 구하는 방법을 설명합니다. 이 문제에는 4개의 변수가 있는 방정식이 있으며 주어진 방정식에 대한 해를 찾는 것이 과제입니다. 여기 간단한 예가 있습니다 &miuns;

Input: X = 1, Y = 1, Z = 1, n = 1

Output: 4

Input: X = 1, Y = 2, Z = 3, n = 4

Output: 3

이 문제에서는 (x, y), (y,z), (x,z)의 모든 값을 간단히 살펴보고 각 변수를 분리하여 방정식을 만족하는지 여부를 확인할 수 있습니다.

해결책을 찾기 위한 접근 방식

이제 우리는 주어진 문제에 대한 해결책을 찾기 위해 Brute Force 방식을 사용할 것입니다.

브루트 포스

이 프로그램에서 (x,y), (y,z) 및 (x,z)의 가능한 모든 값을 살펴보고 z <=n - x - y(여기서 z는 격리됨) 방정식을 충족합니다. ) 여기서 0 <=z <=Z (그리고 다른 분리된 변수에 대해서도 동일).


#include<bits/stdc++.h>
using namespace std;
int main(){
    int X = 1, Y = 2, Z = 3, n = 4; // limits of x, y, z and given n.
    int answer = 0; // counter variable.
    for(int i = 0; i <= X; i++){
        for(int j = 0; j <= Y; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= Z){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    for(int i = 0; i <= X; i++){
        for(int j = 0; j <= Z; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= Y){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    for(int i = 0; i <= Z; i++){
        for(int j = 0; j <= Y; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= X){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    cout << answer << "\n";
}

출력

17

위 프로그램 설명

이 프로그램에서는 중첩 for 루프를 사용하여 (x,y), (y, z), (x,z)의 모든 조합을 살펴보고 방정식을 만족하는지 여부와 방정식을 만족하는지 확인합니다. 만족하면 답을 증가시킵니다.

결론

이 기사에서는 O(X*Y)에서 x + y + z<=n 방정식을 만족하는 해의 수를 찾는 문제를 풉니다. 시간 복잡도. 우리는 또한 이 문제에 대한 C++ 프로그램과 이 문제를 해결하기 위한 완전한 접근 방식을 배웠습니다. C, Java, python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다.