In this article we will describe a method for finding hexagrams that satisfy Eq. Therefore, we take an equation as an example and need to find the values of a, b, c, d, e and f that satisfy the following equation.
( a + b + c ) * e / d = f
Let us reorder the equation −
( a + b + c ) = ( f * d ) / e
This is a simple example of the given problem-
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
We will Use a naive approach to find a solution to a given problem.
In this problem, by observing LHS and RHS, we can find all possible LHS results and store them in an array, similarly, create an RHS array and fill it with all possible RHS results.
Check if the two arrays have the same value and increment the count for each found value and finally display the result.
#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
In this program, we have created two arrays to hold each of the LHS and RHS results. We use three nested loops to put every possible value of (a, b, c) into the LHS and every possible value of (d, e, f) into the RHS. After that, we sort these two arrays to compare them and find the same values in both arrays, passing both arrays to findsamenumber() function.
In the findsamenumber() function, we use two nested loops to check for the same value. When we find two identical elements, we check the frequency of that number in both arrays in order to count the number of times for each possible value.
if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; }
In this article, we solved the number of sextuplets that satisfy the equation in the given array. We find every possible value of the variables in the 6-variable equation (a b c) * e / d = f. We can solve this problem in any other programming language like C, Java, and python.
The above is the detailed content of Written in C++, find the number of six-tuples that satisfy the equation. For more information, please follow other related articles on the PHP Chinese website!