孟希豪森數是具有獨特屬性的奇數。如果一個數字的各位數字總和(其自身的冪)等於原始數字,則該數字被認為是明克豪森數字。這些數字並不常見,而且其中許多都不為人所知。如果使用00 = 0的定義,那麼0也可以被認為是孟希豪森數。
下面的文章提供了一種方法來確定一個數字是否是明克豪森數,同時牢記明克豪森數的這些特徵。
目前的任務是檢查給定的整數 n 是否是 Münchhausen 數,即當每個數字取自己的冪並求和時,結果等於原始數。如果它是 Münchhausen 數,則程式應傳回 true,否則應傳回 false。
Input: 1 Output: True
解釋 - (1 的 1 次方)= 11 = 1。
由於結果數等於原始數,因此 1 是明希豪森數。
Input: 1603 Output: False
解釋 − (1 的1 次方) (6 的6 次方) (0 的0 次方) (3 的3 次方) = 11 66 00 33 ≠ 1603 。
這等於 46684。由於結果數不等於原始數,因此 1603 不是明希豪森數。
Input: 3435 Output: True
解釋 − (3 的3 次方) (4 的4 次方) (3 的3 次方) (5 的5 次方) = 33 44 33 55 = 3435。
由於結果數等於原始數,因此 3435 是明希豪森數。
Input: 4335 Output: False
解釋 − (4的4次方) (3的3次方) (3的3次方) (5的5次方) = 44 33 33 55 ≠ 4335。
由於結果數字與原始數字不相等,所以4335不是一個慕尼黑數。
為了判斷所提供的數字是否為明希豪森數,我們必須知道每個數字自加的結果是否與原始數字相同。可以使用以下方法來計算總和並確定結果是否與原始數字相符。
該方法包括以下步驟 -
將給定的數字分解為其各個位數。
將每個數字提升到自己。
新增結果。
將總和與原始數字進行比較。
顯示答案。
函數 is_munchhausen()
初始化 sum = 0
初始化 temp = n
#同時(溫度 > 0)
初始化 digit = temp % 10
sum = sum pow(數字, 數字)
溫度=溫度/10
#傳回總和==n
#函數main()
初始化n
如果 (is_munchhausen())
cout
其他
cout
#列印輸出
程式透過呼叫is_munchhausen()函數來判斷數字是否為Münchhausen數。此函數使用一個等於 n 的暫存變數和另一個變數 sum 來儲存每個數字對其自身求和的結果的總和。
在迴圈的每一次迭代中,使用‘%’運算子存取temp的每個個位數字。它會傳回數字的最右邊的數字。然後將該數字提升為它本身並加到總和中。在每次迭代的結束時,temp被除以10以存取下一個數字。循環運行直到temp > 0。
// C++ code for Münchhausen Number #include <iostream> #include <cmath> using namespace std; // this function is used to check out whether the given number is Münchhausen Number or not bool is_munchhausen(int n){ int sum = 0; int temp = n; while (temp > 0){ int digit = temp % 10; //yields the rightmost digit as remainder sum = sum + pow(digit, digit); temp = temp / 10; // yields the remaining number } return (sum == n); // returns true if sum is equal to original number } // Driver Code int main(){ int n = 3253; cout << "input number: " << n << endl; if (is_munchhausen(n)){ cout << "Münchhausen Number" << endl; } else { cout << "Non-Münchhausen Number" << endl; } return 0; }
input number: 3253 Non-Münchhausen Number
時間複雜度 - O(log n) 時間複雜度,其中 n 是輸入參數的值。這是因為函數 is_munchhausen() 中 while 迴圈的迭代次數取決於給定數字的位數,而該位數與以10為底的 log(n) 成正比。主函數中只呼叫一次函數,因此程式的總體複雜度與 log(n) 成正比。
空間複雜度 - O(1)。無論輸入參數的大小如何,函數使用固定的記憶體來儲存整數變數sum和temp,因此其空間複雜度是恆定的。
總而言之,明希豪森數是唯一的數字,表示為其自身數字總和。它們並不常見,找到它們可能是一項艱鉅的任務。本文討論的解決方法提供了一種在不使用輔助空間的情況下,在對數時間內輕鬆檢查一個數是否為 Münchhausen 的方法。本文使用各種範例深入解釋了明希豪森數的概念。使用附帶的 C 程式碼可以快速確定給定的數字是否為 Münchhausen 數字。
以上是檢查一個數字是否為Munchhausen數的詳細內容。更多資訊請關注PHP中文網其他相關文章!