Maison >développement back-end >C++ >Recherchez le nombre Armstrong maximum dans la plage du tableau et mettez-le à jour
Les requêtes sur les plages de tableaux sont un domaine émergent des structures de données. Dans cette requête, nous définissons des éléments aléatoires dans un tableau et donnons un problème de requête général pour résoudre efficacement le problème de structure des données. Le nombre d'Armstrong est la somme de ses cubes. Par exemple : 0, 1, 153, 370, 371 et 407 sont tous des nombres d'Armstrong.
Prenons un exemple pour comprendre le nombre d’Armstrong
Exemple 1 - Le numéro donné est 371, vérifiez si le numéro est le numéro Armstrong.
3*3*3 + 7*7*7 + 1* sup>1*1 = 371
Donc, c'est le numéro Armstrong.
Exemple 2 − Le nombre donné est 121, vérifiez si le nombre est le numéro d'Armstrong.
1*1*1 + 2*2*2 + 1* sup>1*1 = 9
Ce n’est donc pas un numéro Armstrong.
Dans cet article, nous allons résoudre le problème de requête de plage de tableau pour trouver le nombre Armstrong maximum et le mettre à jour.
Vector<object_type> variable_name;
C'est une façon de déclarer des vecteurs dans un programme.
Nous commencerons par le fichier d'en-tête nommé « bits/stdc++.h ».
Nous créons une définition de fonction appelée "isArmstrong" qui prend un paramètre n en entrée et vérifie si le nombre est un nombre Armstrong.
La compréhension des opérations des nombres Armstrong comprend les points suivants :
Stockez la valeur '0' dans la variable 'sum', qui sera ensuite utilisée pour additionner chaque nombre avec une puissance.
stocke ensuite ‘n’ dans la variable ‘temp’. Cette variable temporaire sera utilisée dans la boucle while pour vérifier la condition du nombre d'Armstrong.
Ensuite, nous stockons la valeur ‘0’ dans la variable ‘digits’, qui trouvera plus tard la puissance de chaque nombre.
Maintenant, démarrez la fonction principale et initialisez la variable "arr[]" pour définir l'élément de tableau donné.
Nous utilisons la première boucle for pour imprimer les éléments du tableau.
Initialisez une variable vectorielle nommée "armstrong" qui satisfera à la condition de l'instruction if pour trouver la liste des nombres Armstrong en utilisant la fonction prédéfinie pushback().
Ensuite, nous utilisons une seconde boucle for pour parcourir l'index de longueur du tableau, sous cette boucle, l'instruction if-else est utilisée pour trouver la liste des éléments du tableau selon qu'il s'agit de nombres Armstrong ou non.
Pour mettre à jour la requête de plage de tableau, nous initialisons une variable appelée « newNumber » pour stocker le nouvel élément du tableau qui sera vérifié comme étant un nombre Armstrong à l'aide d'une instruction if-else.
Ensuite, stockez 0 dans la variable 'maxArmstrong', qui est utilisée pour suivre le nombre Armstrong maximum parmi les éléments du tableau.
Continuez à utiliser la troisième boucle for, qui itère sur la longueur des éléments Armstrong. À l'intérieur de cette boucle, utilisez une instruction if pour trouver le nombre d'Armstrong maximum.
Ensuite, utilisez la dernière boucle pour parcourir les éléments du tableau suivants qui satisfont les nombres d'Armstrong et imprimer tous les nombres d'Armstrong.
Enfin, nous utilisons la variable 'maxArmstrong' pour imprimer le nombre d'Armstrong maximum.
Dans cette application, nous trouverons le nombre Armstrong maximum avec mise à jour.
#include <bits/stdc++.h> using namespace std; // Function to check if a number is an Armstrong number or not bool isArmstrong(int n) { int sum = 0; int temp = n; int digits = 0; while (temp > 0) { digits++; temp /= 10; } temp = n; while (temp > 0) { int digit = temp % 10; sum += pow(digit, digits); temp /= 10; } return sum == n; } int main() { int arr[] = {0, 123, 1, 19, 12, 153, 370}; int a = sizeof(arr) / sizeof(arr[0]); cout<<"The given array element:"; for(int m = 0; m < a; m++) { cout<<arr[m]<<" "; } // Vector to store Armstrong numbers vector<int> armstrongs; // Check each element of the array if it's an Armstrong number or not cout<<"\nThe element found to be Non-Armstrong number\n"; for (int i = 0; i < a; i++) { if (isArmstrong(arr[i])) { armstrongs.push_back(arr[i]); } else { cout << arr[i] << endl; } } // Add a new number to the array and check if it's an Armstrong number or not int newNumber = 1278; cout<<"The newly added number\t"<<newNumber; if (isArmstrong(newNumber)) { cout << " : Armstrong number" << endl; armstrongs.push_back(newNumber); } else { cout << " : Non-Armstrong number" << endl; } // Find the maximum Armstrong number in the array int maxArmstrong = 0; for (int i = 0; i < armstrongs.size(); i++) { if (armstrongs[i] > maxArmstrong) { maxArmstrong = armstrongs[i]; } } cout << "The following array element satisfied for Armstrong Number: "; for (int i = 0; i < armstrongs.size(); i++) { cout << armstrongs[i] << " "; } cout << endl; cout << "The maximum Armstrong number in the array is: " << maxArmstrong << endl; return 0; }
There are 3 array element whose setbits are in a multiple of KThe given array element:0 123 1 19 12 153 370 The element found to be Non-Armstrong number 123 19 12 The newly added number 1278 : Non-Armstrong number The following array element satisfied for Armstrong Number: 0 1 153 370 The maximum Armstrong number in the array is: 370
Nous avons exploré le concept de requêtes de plage de tableau pour trouver le nombre Armstrong maximum avec la fonction de mise à jour. Nous avons vu comment filtrer un élément de tableau donné en une combinaison de nombres Armstrong et non Armstrong. Après avoir supprimé les nombres non Armstrong des éléments du tableau existants, nous imprimons simplement les résultats des éléments du tableau satisfaisant le type Armstrong et trouvons la valeur maximale parmi eux.
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!