Home > Backend Development > C++ > 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

王林
Release: 2023-09-11 17:17:11
forward
633 people have browsed it

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
Copy after login

Let us reorder the equation −

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

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
Copy after login

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;
}
Copy after login

Output

Number of sextuplets that satisfy an equation: 3
Copy after login

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++;
   }
Copy after login

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!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template