陣列範圍查詢以查詢最大阿姆斯特朗數並更新


陣列範圍查詢是資料結構的一個新興領域。在此查詢中,我們將隨機元素設定為陣列,並給出了通用查詢問題以有效地解決資料結構問題。阿姆斯特朗數是其數字立方和。例如,0、1、153、370、371 和 407 是阿姆斯特朗數。

讓我們舉個例子來理解阿姆斯特朗數

示例 1 - 給定數字為 371,檢查該數字是否為阿姆斯特朗數。

3*3*3 + 7*7*7 + 1*1*1 = 371

因此,這是一個阿姆斯特朗數。

示例 2 - 給定數字為 121,檢查該數字是否為阿姆斯特朗數。

1*1*1 + 2*2*2 + 1*1*1 = 9

因此,這不是一個阿姆斯特朗數。

在本文中,我們將解決陣列範圍查詢以查詢具有更新的最大阿姆斯特朗數。

語法

Vector<object_type> variable_name;

這是一種在程式中宣告向量的方法。

演算法

  • 我們將從名為“bits/stdc++.h”的標頭檔案開始。

  • 我們正在建立一個名為“isArmstrong”的函式定義,它將 n 作為引數來檢查該數字是否為阿姆斯特朗數。

    以下幾點了解阿姆斯特朗數的操作 -

    • 將值“0”儲存到“sum”變數中,該變數稍後將用於對每個具有冪的數字進行加法。

    • 然後將“n”儲存在變數“temp”中。此臨時變數將在 while 迴圈中用於檢查阿姆斯特朗數的條件。

    • 接下來,我們將值“0”儲存在變數“digits”中,該變數稍後將找到每個數字的冪。

  • 現在開始主函式並初始化變數“arr[]”以設定給定的陣列元素。

  • 我們使用第一個 for迴圈列印陣列元素。

  • 初始化名為“armstrong”的向量變數,該變數將在 if 語句中滿足條件,以使用預定義函式pushback()查詢阿姆斯特朗數列表。

  • 然後我們使用第二個 for迴圈迭代陣列長度索引,並且在此迴圈下,if-else 語句已用於根據阿姆斯特朗數或非阿姆斯特朗數查詢陣列元素列表。

  • 為了更新陣列範圍查詢,我們初始化名為“newNumber”的變數以儲存新的陣列元素,該元素將透過使用 if-else 語句檢查阿姆斯特朗數的驗證。

  • 接下來,將 0 儲存到變數“maxArmstrong”中,該變數跟蹤陣列元素中的最大阿姆斯特朗數。

  • 繼續使用第三個 for迴圈,它迭代阿姆斯特朗元素長度。在此迴圈內,if 語句已用於查詢最大阿姆斯特朗數。

  • 然後使用最後一個 for迴圈迭代滿足阿姆斯特朗數的以下陣列元素,並列印所有阿姆斯特朗數。

  • 最後,我們使用“maxArmstrong”變數列印最大阿姆斯特朗數。

示例

在此程式中,我們將查詢具有更新的最大阿姆斯特朗數。

#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

結論

我們探討了陣列範圍查詢的概念,以查詢具有更新的最大阿姆斯特朗數。我們瞭解瞭如何將給定的陣列元素過濾成阿姆斯特朗數和非阿姆斯特朗數的組合。從現有陣列元素中刪除非阿姆斯特朗數後,我們簡單地列印了滿足阿姆斯特朗型別的陣列元素的結果,並在其中找到最大值。

更新於: 2023年5月10日

345 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.