Maison >développement back-end >C++ >Écrit en C++, trouvez le nombre de six-uplets qui satisfont l'équation
Dans cet article, nous décrirons une méthode pour trouver des hexagrammes qui satisfont l'équation. Prenons donc une équation comme exemple et devons trouver les valeurs de a, b, c, d, e et f qui satisfont à l'équation suivante.
( a + b + c ) * e / d = f
Réordonnons l'équation −
( a + b + c ) = ( f * d ) / e
Voici un exemple simple du problème donné -
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
Nous utiliserons une méthode naïve pour trouver la solution du problème donné.
Dans ce problème, en observant LHS et RHS, nous pouvons trouver tous les résultats LHS possibles et les stocker dans un tableau, de la même manière, créer un tableau de RHS et le remplir avec tous les résultats RHS possibles.
Vérifiez si les deux tableaux ont la même valeur et incrémentez le nombre pour chaque valeur trouvée et enfin affichez le résultat.
#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
Dans ce programme, nous avons créé deux tableaux pour contenir chaque résultat de LHS et RHS. Nous utilisons trois boucles imbriquées pour mettre chaque valeur possible de (a, b, c) dans le LHS et chaque valeur possible de (d, e, f) dans le RHS. Après cela, nous trions ces deux tableaux pour les comparer et trouver les mêmes valeurs dans les deux tableaux, en passant les deux tableaux à la fonction findsamenumber().
Dans la fonction findsamenumber(), nous utilisons deux boucles imbriquées pour vérifier la même valeur. Lorsque nous trouvons deux éléments identiques, nous vérifions la fréquence de ce nombre dans les deux tableaux afin de compter le nombre de fois pour chaque valeur possible.
if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; }
Dans cet article, nous avons résolu le nombre de sextuors qui satisfont l'équation dans le tableau donné. Nous trouvons toutes les valeurs possibles des variables dans l'équation à 6 variables (a + b + c) * e / d = f. Nous pouvons résoudre ce problème dans n’importe quel autre langage de programmation comme C, Java et Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!