Home > Backend Development > C++ > Query the maximum Armstrong number within the range of the array and update it

Query the maximum Armstrong number within the range of the array and update it

王林
Release: 2023-09-06 22:21:11
forward
1216 people have browsed it

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.

grammar

Vector<object_type> variable_name;
Copy after login

This is a way to declare vectors in a program.

algorithm

  • 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.

The Chinese translation of

Example

is:

Example

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

Output

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

in conclusion

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!

Related labels:
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