Home  >  Article  >  Backend Development  >  Written in C++, find the number of six-tuples that satisfy the equation

Written in C++, find the number of six-tuples that satisfy the equation

王林
王林forward
2023-09-11 17:17:11601browse

Written in C++, find the number of six-tuples that satisfy the equation

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

The way to find the solution

We will Use a naive approach to find a solution to a given problem.

Naive approach

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.

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

Explanation of the above program

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++;
   }

Conclusion

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!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete