Heim >Backend-Entwicklung >C++ >Fragen Sie die maximale Armstrong-Zahl im Bereich des Arrays ab und aktualisieren Sie sie
Array-Bereichsabfragen sind ein aufstrebender Bereich der Datenstrukturen. In dieser Abfrage setzen wir zufällige Elemente in ein Array und geben ein allgemeines Abfrageproblem an, um das Datenstrukturproblem effizient zu lösen. Die Armstrong-Zahl ist die Summe ihrer Kubikzahlen. Beispiel: 0, 1, 153, 370, 371 und 407 sind allesamt Armstrong-Zahlen.
Nehmen wir ein Beispiel, um Armstrongs Zahl zu verstehen
Beispiel 1 – Die angegebene Nummer ist 371. Überprüfen Sie, ob es sich bei der Nummer um eine Armstrong-Nummer handelt.
3*3*3 + 7*7*7 + 1* sup>1*1 = 371
Das ist also die Armstrong-Zahl.
Beispiel 2 − Die angegebene Zahl ist 121. Überprüfen Sie, ob es sich bei der Zahl um Armstrongs Zahl handelt.
1*1*1 + 2*2*2 + 1* sup>1*1 = 9
Daher handelt es sich hierbei nicht um eine Armstrong-Zahl.
In diesem Beitrag werden wir das Problem der Array-Bereichsabfrage lösen, um die maximale Armstrong-Zahl zu finden und sie zu aktualisieren.
Vector<object_type> variable_name;
Dies ist eine Möglichkeit, Vektoren in einem Programm zu deklarieren.
Wir beginnen mit der Header-Datei mit dem Namen „bits/stdc++.h“.
Wir erstellen eine Funktionsdefinition namens "isArmstrong", die einen Parameter n als Eingabe verwendet und prüft, ob die Zahl eine Armstrong-Zahl ist.
Um die Operationen der Armstrong-Zahlen zu verstehen, müssen folgende Punkte berücksichtigt werden:
Speichern Sie den Wert '0' in der Variablen 'sum', die später zum Addieren jeder Zahl mit einer Potenz verwendet wird.
speichert dann ‘n‘ in der Variablen ‘temp‘. Diese temporäre Variable wird in der while-Schleife verwendet, um den Zustand der Armstrong-Zahl zu überprüfen.
Als nächstes speichern wir den Wert ‘0‘ in der Variablen ‘digits‘, die später die Potenz jeder Zahl ermittelt.
Jetzt starten Sie die Hauptfunktion und initialisieren die Variable "arr[]", um das angegebene Array-Element festzulegen.
Wir verwenden die erste for-Schleife, um die Array-Elemente zu drucken.
Initialisieren Sie eine Vektorvariable mit dem Namen "armstrong", die die Bedingung in der if-Anweisung erfüllt, um die Liste der Armstrong-Zahlen mithilfe der vordefinierten Funktion pushback() zu finden.
Dann verwenden wir eine zweite for-Schleife, um den Längenindex des Arrays zu durchlaufen. In dieser Schleife wird die if-else-Anweisung verwendet, um die Liste der Array-Elemente basierend darauf zu finden, ob es sich um Armstrong-Zahlen handelt oder nicht.
Um die Array-Bereichsabfrage zu aktualisieren, initialisieren wir eine Variable namens ‘newNumber‘, um das neue Array-Element zu speichern, das mithilfe einer if-else-Anweisung als Armstrong-Zahl überprüft wird.
Als nächstes speichern Sie 0 in der Variablen ‘maxArmstrong‘, die verwendet wird, um die maximale Armstrong-Zahl unter den Array-Elementen zu verfolgen.
Verwenden Sie weiterhin die dritte for-Schleife, die über die Länge der Armstrong-Elemente iteriert. Verwenden Sie innerhalb dieser Schleife eine if-Anweisung, um die maximale Armstrong-Zahl zu ermitteln.
Schleife, um die folgenden Array-Elemente zu durchlaufen, die die Armstrong-Zahlen erfüllen, und alle Armstrong-Zahlen auszugeben.
, um die maximale Armstrong-Zahl auszudrucken.
Die chinesische Übersetzung von#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; }
Ausgabe
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
Das obige ist der detaillierte Inhalt vonFragen Sie die maximale Armstrong-Zahl im Bereich des Arrays ab und aktualisieren Sie sie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!