Heim  >  Artikel  >  Backend-Entwicklung  >  Bei einer gegebenen Zahl ist die Summe ihrer Summe und der ursprünglichen Zahl gleich einer anderen gegebenen Zahlenanordnung.

Bei einer gegebenen Zahl ist die Summe ihrer Summe und der ursprünglichen Zahl gleich einer anderen gegebenen Zahlenanordnung.

王林
王林nach vorne
2023-09-13 15:25:02682Durchsuche

Bei einer gegebenen Zahl ist die Summe ihrer Summe und der ursprünglichen Zahl gleich einer anderen gegebenen Zahlenanordnung.

In diesem Artikel befassen wir uns mit einer faszinierenden Frage rund um Zahlen und Permutationen: „Eine Permutation, bei der die Summe einer Zahl und einer ursprünglichen Zahl gleich einer anderen gegebenen Zahl ist“. Dieses Problem vereint auf einzigartige Weise Zahlentheorie und Kombinatorik und ist damit eine faszinierende Herausforderung.

Zur Verdeutlichung: Bei einer gegebenen Originalzahl und einer Zielzahl müssen wir eine Permutation der Originalzahl finden, sodass wir durch Addition der Originalzahl und ihrer Permutation die Zielzahl erhalten.

Das Problem verstehen

Im Wesentlichen kombiniert diese Frage die Konzepte der Zahlenpermutation, Summierung und Gleichheitsprüfung. Die Herausforderung besteht darin, die richtige Permutation (oder Neuanordnung von Zahlen) zu finden, die die vorgegebenen Bedingungen erfüllt.

Erklärung des Algorithmus

Der Algorithmus zur Lösung dieses Problems lautet wie folgt: −

  • Zählen Sie die Häufigkeit jeder Zahl in der ursprünglichen Zahl und der Zielzahl.

  • Frequenzen vergleichen. Wenn sie übereinstimmen, bedeutet dies, dass eine gültige Permutation vorliegt. Wenn sie nicht übereinstimmen, gibt es keine gültige Permutation.

Beispiel

Hier ist eine C++-Lösung, die den oben genannten Algorithmus verwendet -

#include<bits/stdc++.h>
using namespace std;

bool isPermutation(int original, int target) {
   vector<int> countOriginal(10, 0), countTarget(10, 0);
   
   while (original > 0) {
      countOriginal[original % 10]++;
      original /= 10;
   }
   
   while (target > 0) {
      countTarget[target % 10]++;
      target /= 10;
   }
   
   for (int i = 0; i < 10; i++) {
      if (countOriginal[i] != countTarget[i]) {
         return false;
      }
   }
   
   return true;
}

int main() {
   int original = 1234;
   int target = 2468;
   
   if (isPermutation(original, target - original)) {
      cout << "Yes, there is a permutation of the original number that satisfies the condition." << endl;
   } else {
      cout << "No, there is no permutation of the original number that satisfies the condition." << endl;
   }
   
   return 0;
}

Ausgabe

Yes, there is a permutation of the original number that satisfies the condition.

In der Funktion isPermutation initialisieren wir zunächst die beiden Vektoren countOriginal und countTarget, um die Häufigkeit der Zahlen in der Originalzahl bzw. der Zielzahl zu berechnen. Anschließend durchlaufen wir jede Zahl in der ursprünglichen Zahl und der Zielzahl und erhöhen die entsprechende Anzahl. Abschließend vergleichen wir die Zählungen. Wenn sie übereinstimmen, geben wir true zurück, andernfalls geben wir false zurück.

Die Hauptfunktion setzt die Originalzahl und die Zielzahl und prüft, ob es eine gültige Permutation der Originalzahl gibt, die die Bedingung erfüllt.

Testfallbeispiel

Lassen Sie uns die ursprüngliche Zahl auf 1234 und die Zielzahl auf 2468 festlegen. Die Differenz zwischen der Zielzahl und der ursprünglichen Zahl beträgt 1234. Daher müssen wir prüfen, ob es eine Permutation gibt, die 1234 selbst entspricht. Offensichtlich ist die ursprüngliche Zahl eine Permutation ihrer selbst, daher lautet die Ausgabe „Ja, es gibt eine Permutation der ursprünglichen Zahl, die die Bedingung erfüllt.“

Zeitliche und räumliche Komplexität

Die zeitliche Komplexität dieses Algorithmus beträgt O(n), wobei n die Anzahl der Ziffern in der gegebenen Zahl ist. Das liegt daran, dass wir jede Ziffer sowohl der ursprünglichen Zahl als auch der Zielzahl durchgehen.

Die Raumkomplexität beträgt O(1), da die Größe der Vektoren countOriginal und countTarget unabhängig von der Eingabegröße konstant (10) ist.

Fazit

In diesem Artikel untersuchen wir ein interessantes Problem, das die Konzepte Permutationen, Addition und numerische Gleichheit umfasst. Wir haben eine C++-Lösung implementiert, die die Häufigkeit von Zahlen in der Originalzahl und der Zielzahl ausnutzt.

Dieses Problem stellt eine einzigartige Herausforderung und eine großartige Möglichkeit für Sie dar, Ihre Fähigkeiten zur Problemlösung zu üben, insbesondere in Zahlentheorie und Kombinatorik.

Das obige ist der detaillierte Inhalt vonBei einer gegebenen Zahl ist die Summe ihrer Summe und der ursprünglichen Zahl gleich einer anderen gegebenen Zahlenanordnung.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen