首頁 > 後端開發 > C++ > 查詢數組範圍內的最大阿姆斯壯數,並進行更新

查詢數組範圍內的最大阿姆斯壯數,並進行更新

王林
發布: 2023-09-06 22:21:11
轉載
1218 人瀏覽過

查詢數組範圍內的最大阿姆斯壯數,並進行更新

陣列範圍查詢是資料結構的一個新興領域。在這個查詢中,我們將隨機元素設定到數組中,並給出了一般的查詢問題,以有效地解決資料結構問題。阿姆斯壯數是其各位數立方和。例如- 0、1、153、370、371和407都是阿姆斯壯數。

讓我們舉一個例子來理解阿姆斯壯數

範例1 - 給定的數字是371,檢查該數字是否為阿姆斯壯數。

3*3*3 7*7*7 1* sup>1* 1 = 371

因此,這是阿姆斯壯數。

範例2 − 給定的數字是121,檢查該數字是否為阿姆斯壯數。

1*1*1 2*2*2 1* sup>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語句來找出最大的阿姆斯壯數。

  • 然後使用最後一個循環來迭代滿足阿姆斯特朗數的以下數組元素,並列印所有阿姆斯特朗數。

  • 最後,我們使用‘maxArmstrong’變數列印出最大的阿姆斯壯數。

Example

的中文翻譯為:

範例

在這個程式中,我們將找到具有更新的最大阿姆斯壯數。

#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
登入後複製

結論

我們探索了數組範圍查詢的概念,以找到具有更新功能的最大阿姆斯壯數。我們看到如何將給定的陣列元素過濾為阿姆斯壯數和非阿姆斯壯數的組合。在從現有數組元素中移除非阿姆斯特朗數之後,我們只需列印滿足阿姆斯特朗類型的數組元素的結果,並找到其中的最大值。

以上是查詢數組範圍內的最大阿姆斯壯數,並進行更新的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板