>  기사  >  백엔드 개발  >  C++로 작성하여 방정식을 만족하는 6-튜플의 수를 찾으십시오.

C++로 작성하여 방정식을 만족하는 6-튜플의 수를 찾으십시오.

王林
王林앞으로
2023-09-11 17:17:11556검색

C++로 작성하여 방정식을 만족하는 6-튜플의 수를 찾으십시오.

이 기사에서는 방정식을 만족하는 헥사그램을 찾는 방법을 설명합니다. 그러므로 방정식을 예로 들어 다음 방정식을 만족하는 a, b, c, d, e, f의 값을 찾아야 합니다.

( a + b + c ) * e / d = f

방정식의 순서를 바꾸겠습니다 −

( a + b + c ) = ( f * d ) / e

다음은 주어진 문제의 간단한 예입니다. -

Input : arr [ ] = { 1, 3 }
Output : 4
Explanation : ( a, b, c, e, f ) = 1, d = 3
   ( a, b, c, d, e ) = 1, f = 3
   ( a, b, c ) = 1, ( d, e, f ) = 3
   ( a, b, c, d, f ) = 3, ( e ) = 1

Input : arr [ ] = { 2, 5 }
Output : 3

해를 찾는 방법

우리는 주어진 문제의 해를 찾기 위해 순진한 방법을 사용할 것입니다.

순진한 접근 방식

이 문제에서는 LHS와 RHS를 관찰하여 가능한 모든 LHS 결과를 찾아 배열에 저장할 수 있습니다. 마찬가지로 RHS 배열을 만들고 가능한 모든 RHS 결과로 채울 수 있습니다.

두 배열의 값이 동일한지 확인하고 발견된 각 값의 개수를 증가시켜 최종적으로 결과를 표시합니다.

Example

#include<bits/stdc++.h>
using namespace std;
int findsamenumbers(int *arr1, int *arr2, int n){
    int i = 0, j = 0, k = 0, count=0;
    while(( i < n*n*n+1) && (j < n*n*n+1)){
        if(arr1[i] < arr2[j])
            i++;
        else if(arr1[i] == arr2[j]){
            count++;
        int temp = arr1[i];
        while(temp==arr1[++i]){
            count++;
        }
        while(temp==arr2[++j]){
            count++;
        }
    }
    else
        j++;
    }  
    return count;
}
int main(){
    int arr[] = {2,5};
    int n = sizeof(arr)/sizeof(arr[0]);
    // Generating all possible values of LHS array
    int index = 0,i;
    int LHS[n*n*n ];
    for ( i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for(int k = 0; k < n; k++){
                LHS[index++] = (arr[i] * arr[j]) / arr[k];
            }
        }
    }
    // Generating all possible value of RHS array
    int RHS[n*n*n ];
    index=0;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for (int k = 0; k < n; k++){
                RHS[index++] = (arr[i] + arr[j] + arr[k]);
            }
        }
    }
    sort(RHS, RHS + (n*n*n));
    sort(LHS, LHS + (n*n*n));
    int result = findsamenumbers(LHS, RHS, n);
    cout<<"Number of sextuplets that satisfy an equation: "<<result;
    return 0;
}

Output

Number of sextuplets that satisfy an equation: 3

위 프로그램에 대한 설명

이 프로그램에서는 LHS와 RHS의 각 결과를 저장하기 위해 두 개의 배열을 만들었습니다. 세 개의 중첩 루프를 사용하여 (a, b, c)의 가능한 모든 값을 LHS에 넣고 (d, e, f)의 모든 가능한 값을 RHS에 넣습니다. 그런 다음 이 두 배열을 정렬하여 비교하고 두 배열에서 동일한 값을 찾은 다음 두 배열을 findamenumber() 함수에 전달합니다.

findsamenumber() 함수에서는 두 개의 중첩 루프를 사용하여 동일한 값을 확인합니다. 두 개의 동일한 요소를 찾으면 가능한 각 값의 횟수를 계산하기 위해 두 배열에서 해당 숫자의 빈도를 확인합니다.

if(arr1[i] == arr2[j]){
   count++;
   int temp = arr1[i];
   while(temp==arr1[++i]){
      count++;
   }
   while(temp==arr2[++j]){
      count++;
   }

결론

이 글에서는 주어진 배열에서 방정식을 만족하는 6중주 개수를 풀어보았습니다. 변수가 6개인 방정식 (a + b + c) * e / d = f에서 변수의 가능한 모든 값을 찾습니다. C, Java, Python과 같은 다른 프로그래밍 언어로 이 문제를 해결할 수 있습니다.

위 내용은 C++로 작성하여 방정식을 만족하는 6-튜플의 수를 찾으십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제