이 기사에서는 방정식을 만족하는 헥사그램을 찾는 방법을 설명합니다. 그러므로 방정식을 예로 들어 다음 방정식을 만족하는 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 결과로 채울 수 있습니다.
두 배열의 값이 동일한지 확인하고 발견된 각 값의 개수를 증가시켜 최종적으로 결과를 표시합니다.
#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; }
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!