Home >Backend Development >C++ >Query the maximum Armstrong number within the range of the array and update it
Array range queries are an emerging area of data structures. In this query, we set random elements into an array and give a general query problem to solve the data structure problem efficiently. The Armstrong number is the sum of its cubes. For example - 0, 1, 153, 370, 371 and 407 are all Armstrong numbers.
Let us take an example to understand Armstrong number
Example 1 - The given number is 371, check if the number is Armstrong number.
3*3*3 7*7*7 1* sup>1* 1 = 371
So, this is the Armstrong number.
Example 2 − The given number is 121, check whether the number is Armstrong's number.
1*1*1 2*2*2 1* sup>1* 1 = 9
Therefore, this is not an Armstrong number.
In this post, we will solve the array range query problem to find the maximum Armstrong number and update it.
Vector<object_type> variable_name;
This is a way to declare vectors in a program.
We will start with a header file named "bits/stdc .h".
We are creating a function definition called "isArmstrong" which takes parameter n as input and is used to check whether the number is an Armstrong number.
Understanding the operations of Armstrong numbers, there are the following points:
Store the value '0' into the 'sum' variable, which will later be used to add each number to a power.
Then 'n' is stored in the variable 'temp'. This temporary variable will be used in the while loop to check the condition of Armstrong number.
Next, we store the value '0' in the variable 'digits', which will later find the power of each number.
Now start the main function and initialize the variable "arr[]" to set the given array element.
We are using the first for loop to print the array elements.
Initialize a vector variable named "armstrong" that will satisfy the condition in the if statement to find the Armstrong number by using the predefined function pushback() list of.
We then use a second for loop to iterate over the length index of the array. Under this loop, the if-else statement is used to find the list of array elements based on whether they are Armstrong numbers or not. .
To update the array range query, we are initializing a variable named 'newNumber' to store the new array element that will be verified to be an Armstrong number by using an if-else statement .
Next, store 0 into the variable 'maxArmstrong', which is used to track the maximum Armstrong number among the array elements.
Continue using The third for loop, which iterates over the length of the Armstrong elements. Inside this loop, use an if statement to find the maximum Armstrong number.
Then use the last loop to iterate the following array elements that satisfy the Armstrong numbers and print all the Armstrong numbers.
Finally, we use the ‘maxArmstrong’ variable to print out the maximum Armstrong number.
In this program we will find the maximum Armstrong number with update.
#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
We explored the concept of array range queries to find the maximum Armstrong number with an update function. We saw how to filter a given array element into a combination of Armstrong and non-Armstrong numbers. After removing the non-Armstrong numbers from the existing array elements, we simply print the results of the array elements satisfying the Armstrong type and find the maximum value among them.
The above is the detailed content of Query the maximum Armstrong number within the range of the array and update it. For more information, please follow other related articles on the PHP Chinese website!