Heim > Backend-Entwicklung > C++ > Hauptteil

Rundum digitale Produkte

WBOY
Freigeben: 2023-09-19 13:09:10
nach vorne
952 Leute haben es durchsucht

Rundum digitale Produkte

Bei zwei gegebenen Zahlen besteht unsere Aufgabe darin, herauszufinden, ob sich die gegebene Zahl durch Multiplikation der anderen beiden Zahlen ergibt, sodass alle drei Zahlen zusammen eine 9-stellige Pan-Zahl ergeben.

Mit anderen Worten kann man sagen, dass wir herausfinden müssen, ob eine gegebene Zahl, wenn sie mit zwei anderen Zahlen kombiniert wird, eine Multiplikationsoperation ergibt, um die volle Zahl der ursprünglichen Zahl zu erhalten.

Wir können auf viele Situationen stoßen, in denen wir mehrere Lösungen für das Problem erhalten. Um die beste Zeitkomplexität zu erzielen, drucken wir einfach die erste gefundene Lösung aus und stoppen den iterativen Prozess.

Lösung: Lassen Sie uns zunächst besprechen, was eine vollstellige Zahl ist –

Eine n-stellige Zahl wird genau dann Pannummer genannt, wenn sie alle Ziffern von 1 bis n genau einmal verwendet. Das heißt, die Zahl kann als Permutation aller Zahlen von 1 bis n dargestellt werden, wobei jeweils nur eine Ziffer verwendet wird.

Zum Beispiel ist 6745312 eine 7-stellige Pan-Nummer, da alle Ziffern von 1 bis 7 verwendet werden

Lassen Sie uns dieses Problem nun anhand einiger Beispiele verstehen –

Given Number: 7254
Result obtained: Yes, the condition is true
Nach dem Login kopieren

Wie wir alle wissen, kann 7254 als Produkt von 39 und 186 ausgedrückt werden.

Durch Addition von 39, 186 und 7254 erhalten wir 391867254, die alle Zahlen von 1 bis 9 enthält. Jede Zahl wird nur einmal verwendet, d. h. es handelt sich um eine vollstellige Zahl bestehend aus 9 Ziffern.

Given Number: 6952
Result obtained: Yes, the condition is true
Nach dem Login kopieren

Methode

Lassen Sie uns nun Möglichkeiten besprechen, dieses Problem zu lösen −

Wir prüfen zunächst, indem wir alle Zahlenpaare finden, deren Produkt einer bestimmten Zahl entspricht. Dann erstellen wir für jedes mögliche Paar von Lösungszahlen eine Zeichenfolge und speichern alle drei Zahlen (die ursprüngliche Zahl und die beiden Faktoren, die dazu führen, dass das Produkt diese Zahl ist).

Lassen Sie uns nun einen funktionierenden Algorithmus für unsere Lösung finden.

  • Schritt 1 – Wiederholen Sie die Schleife, um alle Faktorpaare auf diese Zahl zu überprüfen.

  • Schritt 2 − Für jeden Teil der Faktoren erstellen wir eine Zeichenfolge, die die ursprüngliche Zahl und die beiden Faktoren enthält.

  • Schritt 3 – Sortieren Sie die gebildete Zeichenfolge mit der Funktion sort().

  • Schritt 4 – Jetzt erstellen wir eine weitere Zeichenfolge „123456789“

  • Schritt 5 – Vergleichen Sie die beiden Zeichenfolgen und geben Sie true zurück, wenn sie gleich sind.

Beispiel

Der Code für diese Methode lautet wie folgt:

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

// this function checks whether the given string consist of pandigital numbers
bool Is_Pandigital_product (string Original_string) {
   if ( Original_string.length() != 9 ) {
      return false;
   }
   char c[Original_string.length()];
   strcpy(c, Original_string.c_str());
   sort(c, c + Original_string.length());
   string new_string = c;
   if(new_string.compare("123456789") == 0) // comparing both the strings
   {
      return true;
   } else {
      return true;
   }
}
bool PandigitalProduct_1_9(int num)
// This function iterates over a loop till Sqrt(n) and searches for factors of given input.
// for each factor, this loop calls for Is_Pandigital_product function
{
   for (int Iterator = 1; Iterator * Iterator <= num; Iterator++)
      if (num % Iterator == 0 && Is_Pandigital_product(to_string(num) + to_string(Iterator) + to_string(num / Iterator)))
   return true; //Returns true if found pandigital number
   return false;
}
int main() {
   int num = 1234;
   if (PandigitalProduct_1_9(num) == true)
      cout << "yes the number " << num << " is a pandigital product";
   else
      cout << "no the number " << num <<" is not a pandigital product";
    return 0;
}
Nach dem Login kopieren

Ausgabe

yes the number 1234 is a pandigital product
Nach dem Login kopieren

Zeitkomplexität – Da wir eine einzelne Schleife verwenden, die von 1 bis sqrt(n) iteriert, beträgt die Zeitkomplexität dieser Lösung O(N^1/2)

Raumkomplexität – Da der Code keinen zusätzlichen Speicher benötigt, ist die Raumkomplexität linear, d. h. O(1).

In diesem Artikel untersuchen wir, was eine ganze Zahl ist und wie wir effizient feststellen können, ob eine bestimmte Zahl und ihre Faktoren (Paare) eine 9-stellige ganze Zahl ergeben, wenn sie nach der Multiplikation einer Zahl zu einer Zeichenfolge kombiniert werden.

Das obige ist der detaillierte Inhalt vonRundum digitale Produkte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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