Heim > Backend-Entwicklung > C++ > Hauptteil

Überprüfen Sie, ob eine Zahl eine Münchhausen-Zahl ist

PHPz
Freigeben: 2023-09-05 22:01:07
nach vorne
1177 Leute haben es durchsucht

Überprüfen Sie, ob eine Zahl eine Münchhausen-Zahl ist

Die Münchhausen-Zahl ist eine ungerade Zahl mit eindeutigen Eigenschaften. Eine Zahl gilt als Münchhausen-Zahl, wenn die Summe ihrer Ziffern (ihrer Potenzen) gleich der ursprünglichen Zahl ist. Diese Zahlen sind ungewöhnlich und viele von ihnen sind unbekannt. Wenn die Definition 00 = 0 verwendet wird, kann 0 auch als Münchhausen-Zahl betrachtet werden.

Der folgende Artikel bietet eine Methode zur Bestimmung, ob eine Zahl eine Münchhausen-Zahl ist, unter Berücksichtigung dieser Merkmale von Münchhausen-Zahlen.

Problemstellung

Die aktuelle Aufgabe besteht darin, zu prüfen, ob eine gegebene ganze Zahl n eine Münchhausen-Zahl ist, d. h. wenn jede Zahl auf ihre eigene Potenz erhöht und summiert wird, ist das Ergebnis gleich der ursprünglichen Zahl. Wenn es sich um eine Münchhausen-Zahl handelt, sollte das Programm true zurückgeben, andernfalls sollte es false zurückgeben.

Beispiel

Input: 1
Output: True
Nach dem Login kopieren

Erklärung - (1 hoch 1. Potenz) = 11 = 1.

Da die resultierende Zahl der ursprünglichen Zahl entspricht, ist 1 die Münchhausen-Zahl.

Input: 1603
Output: False
Nach dem Login kopieren

Erklärung − (1 hoch 1) + (6 hoch 6) + (0 hoch 0) + (3 hoch 3) = 1< super>1 + 66 + 00 + 33 ≠ 1603.

Dies entspricht 46684. Da die resultierende Zahl nicht mit der ursprünglichen Zahl übereinstimmt, ist 1603 keine Münchhausen-Zahl.

Input: 3435
Output: True
Nach dem Login kopieren

Erklärung − (3 hoch 3) + (4 hoch 4) + (3 hoch 3) + (5 hoch 5) = 3< super>3 + 44 + 33 + 55 = 3435.

Da die resultierende Zahl der ursprünglichen Zahl entspricht, ist 3435 die Münchhausen-Zahl.

Input: 4335
Output: False
Nach dem Login kopieren

Erklärung − (4 hoch 4) + (3 hoch 3) + (3 hoch 3) + (5 hoch 5) = 44 + 33 + 33 + 55 ≠ 4335.

Da die resultierende Zahl nicht mit der ursprünglichen Zahl übereinstimmt, ist 4335 keine Münchner Zahl.

Lösungsmethode

Um festzustellen, ob es sich bei der angegebenen Zahl um eine Münchhausen-Zahl handelt, müssen wir wissen, ob das Ergebnis der Addition jeder Zahl mit sich selbst mit der ursprünglichen Zahl übereinstimmt. Mit den folgenden Methoden können Sie die Summe berechnen und feststellen, ob das Ergebnis mit der ursprünglichen Zahl übereinstimmt.

Algorithmus

Die Methode umfasst die folgenden Schritte –

  • Zerlegen Sie die angegebene Zahl in ihre einzelnen Ziffern.

  • Erhöhe jede Zahl um sich selbst.

  • Ergebnisse hinzufügen.

  • Vergleichen Sie die Summe mit der ursprünglichen Zahl.

  • Antworten anzeigen.

Pseudocode

Funktion is_munchhausen()

  • Summe initialisieren = 0

  • Temp = n

  • initialisieren
  • gleichzeitig (Temperatur > 0)

    Ziffer initialisieren = temp % 10

    Summe = Summe + pow(Zahl, Zahl)

    Temperatur=Temperatur/10

  • Rückgabesumme==n

Funktion main()

  • N initialisieren

  • if (is_munchhausen())

    cout <<"Münchhausen-Nummer"<<“明希豪森数”

  • Andere

    cout << „Nicht-Sekten-Hausen-Nummer“

  • Ausdruck

Beispiel: C++-Programm

Das Programm ermittelt, ob eine Zahl eine Münchhausen-Zahl ist, indem es die Funktion is_munchhausen() aufruft. Diese Funktion verwendet eine temporäre Variable gleich n und eine weitere Variable sum, um die Summe der Ergebnisse jeder über sich selbst summierten Zahl zu speichern.

Verwenden Sie in jeder Iteration der Schleife den Operator „%“, um auf jede einzelne Ziffer von temp zuzugreifen. Es gibt die Ziffer ganz rechts der Zahl zurück. Diese Zahl wird dann auf sich selbst erhöht und zur Gesamtsumme addiert. Am Ende jeder Iteration wird temp durch 10 geteilt, um auf die nächste Zahl zuzugreifen. Die Schleife läuft, bis die Temperatur > 0 ist.

// 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;
}
Nach dem Login kopieren

Ausgabe

input number: 3253
Non-Münchhausen Number
Nach dem Login kopieren

Analyse der zeitlichen und räumlichen Komplexität

Zeitkomplexität – O(log n) Zeitkomplexität, wobei n der Wert des Eingabeparameters ist. Dies liegt daran, dass die Anzahl der Iterationen der while-Schleife in der Funktion is_munchhausen() von der Anzahl der Ziffern in der angegebenen Zahl abhängt, die proportional zu log(n) zur Basis 10 ist. Diese Funktion wird in der Hauptfunktion nur einmal aufgerufen, sodass die Gesamtkomplexität des Programms proportional zu log(n) ist.

Raumkomplexität - O(1). Diese Funktion verwendet festen Speicher zum Speichern der ganzzahligen Variablen sum und temp, sodass ihre Speicherplatzkomplexität unabhängig von der Größe der Eingabeargumente konstant ist.

Fazit

Zusammenfassend lässt sich sagen, dass eine Münchhausen-Zahl eine eindeutige Zahl ist, die als Summe ihrer eigenen Zahlen ausgedrückt wird. Sie kommen nicht häufig vor und es kann eine schwierige Aufgabe sein, sie zu finden. Die in diesem Artikel besprochene Lösung bietet eine Möglichkeit, in logarithmischer Zeit einfach zu überprüfen, ob eine Zahl Münchhausen ist, ohne Hilfsraum zu verwenden. In diesem Artikel wird das Konzept der Münchhausen-Zahl anhand verschiedener Beispiele ausführlich erläutert. Verwenden Sie den enthaltenen C++-Code, um schnell festzustellen, ob eine bestimmte Zahl eine Münchhausen-Zahl ist.

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie, ob eine Zahl eine Münchhausen-Zahl ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage