Rumah > Artikel > pembangunan bahagian belakang > Semak sama ada nombor adalah nombor Munchhausen
Nombor Munchhausen ialah nombor ganjil dengan sifat unik. Nombor dianggap sebagai nombor Munchhausen jika jumlah digitnya (kuasanya) adalah sama dengan nombor asal. Nombor ini jarang berlaku dan kebanyakannya tidak diketahui. Jika takrifan 00 = 0 digunakan, maka 0 juga boleh dianggap sebagai nombor Munchhausen.
Artikel berikut menyediakan kaedah untuk menentukan sama ada sesuatu nombor ialah nombor Munchhausen, dengan mengambil kira ciri-ciri nombor Munchhausen ini.
Tugas semasa adalah untuk menyemak sama ada integer n yang diberikan ialah nombor Münchhausen, iaitu apabila setiap nombor dinaikkan kepada kuasanya sendiri dan dijumlahkan, hasilnya adalah sama dengan nombor asal. Program ini harus kembali benar jika ia adalah nombor Münchhausen, sebaliknya palsu.
Input: 1 Output: True
Penjelasan - (1 hingga kuasa pertama) = 11 = 1.
Oleh kerana nombor yang terhasil adalah sama dengan nombor asal, 1 ialah nombor Munchhausen.
Input: 1603 Output: False
Penjelasan − (1 hingga kuasa 1) + (6 hingga kuasa ke-6) + (0 hingga kuasa ke-0) + (3 hingga kuasa ke-3) = 11 + 66 + 00 + 33 ≠ 1603.
Ini bersamaan dengan 46684. Oleh kerana nombor yang terhasil tidak sama dengan nombor asal, 1603 bukanlah nombor Munchhausen.
Input: 3435 Output: True
Penjelasan − (3 kepada kuasa ke-3) + (4 kepada kuasa ke-4) + (3 kepada kuasa ke-3) + (5 kepada kuasa ke-5) = 33 + 44 + 33 + 55 = 3435.
Oleh kerana nombor yang terhasil adalah sama dengan nombor asal, 3435 ialah nombor Munchhausen.
Input: 4335 Output: False
Penjelasan − (4 kepada kuasa ke-4) + (3 kepada kuasa ke-3) + (3 kepada kuasa ke-3) + (5 kepada kuasa ke-5) = 44 + 33 + 33 + 55 ≠ 4335.
Oleh kerana nombor yang terhasil tidak sama dengan nombor asal, 4335 bukan nombor Munich.
Untuk mengetahui sama ada nombor yang diberikan adalah nombor Münchhausen, kita mesti tahu sama ada hasil penambahan setiap nombor pada dirinya adalah sama dengan nombor asal. Anda boleh menggunakan kaedah berikut untuk mengira jumlah dan menentukan sama ada hasilnya sepadan dengan nombor asal.
Kaedahnya merangkumi langkah-langkah berikut -
Pecah nombor yang diberikan kepada digit individunya.
Naikkan setiap nombor kepada dirinya sendiri.
Tambah hasil.
Bandingkan jumlah dengan nombor asal.
Tunjukkan jawapan.
Fungsi ialah_munchhausen()
Jumlah permulaan = 0
Mulakan suhu = n
serentak (suhu > 0)
Inisialisasi digit = suhu % 10
jumlah = jumlah + pow(nombor, nombor)
Suhu=Suhu/10
Jumlah pulangan==n
Fungsi utama()
Memulakan n
jika (is_munchhausen())
cout
Lain-lain
cout
Cetak
Program ini menentukan sama ada nombor adalah nombor Münchhausen dengan memanggil fungsi is_munchhausen(). Fungsi ini menggunakan pembolehubah sementara bersamaan dengan n dan satu lagi jumlah pembolehubah untuk menyimpan hasil tambah bagi setiap nombor yang dijumlahkan ke atas dirinya sendiri.
Dalam setiap lelaran gelung, gunakan operator ‘%’ untuk mengakses setiap digit tunggal suhu. Ia mengembalikan digit paling kanan nombor itu. Nombor itu kemudiannya dinaikkan kepada dirinya sendiri dan ditambah kepada jumlah keseluruhan. Pada akhir setiap lelaran, temp dibahagikan dengan 10 untuk mengakses nombor seterusnya. Gelung berjalan sehingga suhu > 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
Kerumitan Masa - O(log n) kerumitan masa, dengan n ialah nilai parameter input. Ini kerana bilangan lelaran gelung while dalam fungsi is_munchhausen() bergantung pada bilangan digit dalam nombor yang diberikan, yang berkadar dengan log(n) asas 10. Fungsi ini dipanggil sekali sahaja dalam fungsi utama, jadi kerumitan keseluruhan program adalah berkadar dengan log(n).
Kerumitan ruang - O(1). Fungsi ini menggunakan memori tetap untuk menyimpan jumlah pembolehubah integer dan temp, jadi kerumitan ruangnya adalah malar tanpa mengira saiz argumen input.
Untuk meringkaskan, nombor Münchhausen ialah nombor unik yang dinyatakan sebagai jumlah nombornya sendiri. Mereka tidak biasa dan mencarinya boleh menjadi tugas yang sukar. Penyelesaian yang dibincangkan dalam artikel ini menyediakan cara untuk menyemak dengan mudah sama ada sesuatu nombor adalah Münchhausen dalam masa logaritma tanpa menggunakan ruang tambahan. Artikel ini menerangkan konsep nombor Munchhausen secara mendalam menggunakan pelbagai contoh. Gunakan kod C++ yang disertakan untuk menentukan dengan cepat sama ada nombor yang diberikan ialah nombor Münchhausen.
Atas ialah kandungan terperinci Semak sama ada nombor adalah nombor Munchhausen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!