Die Problemstellung besteht darin, die Position von n in einer Zahl bestehend aus 2, 3, 5 und 7 auszugeben, wobei n jede vom Benutzer angegebene positive Zahl sein kann.
Eine Zahl bestehend aus 2, 3, 5 und 7 bedeutet, dass es sich um eine streng steigende Zahlenfolge handelt, die nur die Zahlen 2, 3, 5 oder 7, die ersten vier Primzahlen, enthält. Die ersten Zahlen der Folge, bei denen alle Zahlen nur 2,3,5 und 7 sind, weil ihre Zahlen 2, 3, 5, 7, 22, 23, 25, 27, 32, 33, 35, 37 usw. sind .
Grundsätzlich ist jede Zahl in der Reihenfolge eine Kombination dieser 4 Zahlen (d. h. 2, 3, 5 oder 7) und die Reihenfolge ist in aufsteigender Reihenfolge angeordnet.
In dieser Frage erhalten wir eine Zahl N, deren Ziffern nur 2, 3, 5 und 7 sind. Wir müssen die Position der angegebenen Zahl in der Folge herausfinden und ausdrucken. Dies ist die gewünschte numerische Ausgabe.
Lassen Sie uns dieses Problem anhand des folgenden Beispiels besser verstehen.
INPUT : N=33</p><p>OUTPUT : 10
Erklärung – Die angegebene Zahl, die in der Eingabe nur 2, 3, 5 oder 7 enthält, ist 33. In einer Zahlenfolge mit nur den Ziffern 2, 3, 5 oder 7 ist Position 33 die 10. Position. Daher beträgt unsere Ausgabe 10.
INPUT : 52</p><p>OUTPUT : 13
Erklärung – Die Zahl in der Eingabe ist 52. Wenn wir dem Muster in der Reihenfolge folgen, wobei jede Zahl 2, 3, 5 oder 7 als Ziffer hat und die Reihenfolge streng aufsteigend ist, finden wir 52 an Position 13. Unser gewünschter Output ist also 13.
Lassen Sie uns den Algorithmus verstehen, um die Position einer bestimmten Zahl direkt zu finden, ohne die gesamte Sequenz zu erstellen.
Wenn wir uns Zahlenfolgen ansehen, bei denen die Zahlen nur 2, 3, 5 oder 7 sind, werden wir feststellen, dass wir mit einer bestimmten Zahl nur 4 Zahlenkombinationen bilden können. Wir werden diese Logik verwenden, um die Position einer beliebigen Zahl N herauszufinden.
Die ersten vier Zahlen befinden sich wie folgt:
2: Erster Platz
3: Zweiter Platz
5: Dritter Platz
7: Vierter Platz
Da die Reihenfolge aufsteigend ist, sind die nächsten vier Zahlen zweistellig, wobei die erste Zahl 2 ist, da wir nur 4 Zahlen mit bestimmten Zahlen bilden können.
Wir können die Position einer beliebigen Anzahl von Ziffern ermitteln, indem wir die Position der ersten Ziffer links mit 4 multiplizieren und die Position dieser bestimmten Zahl addieren.
Zum Beispiel N=52
Die Anfangsposition ist 0.
Ausgehend von der Zahl links ist die Position 5 in der Reihenfolge die Position Position*4+5, also 0*4+3=3. Position ist jetzt 3.
Die nächste Zahl ist 2, also ist die Position der Zahl 3*4+1, da die aktuelle Position 3 mal 4 ist, ergibt die Addition der Position der aktuellen Zahl Position 13, also 52 Positionen in der Reihenfolge Zahlen.
Um dieses Problem zu lösen, initialisieren wir einfach die Position auf 0. Überprüfen Sie dann jede Zahl bis zur letzten Ziffer und aktualisieren Sie die Position entsprechend -
Für Nummer 2 ist die Position Position*4+1.
Für die Nummer 3 ist die Position Position*4+2.
Für die Nummer 5 ist die Position Position*4+3.
Für die Nummer 7 ist die Position Position*4+4.
Wir aktualisieren die Position, indem wir sie mit 4 multiplizieren, da wir für jede mögliche Zahl nur 4 Kombinationen erstellen können. Jedes Mal, wenn wir also die Position mit 4 multiplizieren und die Position der aktuellen Zahl addieren, erhalten wir die Position der Zahl N, die nur 2, 3, 5 oder 7 ist.
Wir werden diesen Algorithmus in unserem Ansatz verwenden, um das Problem effizient zu lösen.
Schritte, die bei der Implementierung des Algorithmus in unserer Methode zum Drucken der Position einer Zahl N, die nur aus 2, 3, 5 oder 7 besteht, befolgt werden müssen -
Wir erstellen eine Funktion, um die Position einer bestimmten Zahl zu ermitteln, die nur 2, 3, 5 oder 7 ist.
Wir erhalten die Eingabenummer N in Form einer Zeichenfolge.
Also iterieren wir von i=0 bis i
Wenn im ersten Fall die i-te Zahl 2 ist, multiplizieren wir diese Position mit 4 und 1, da 1 die Position von 2 ist. In ähnlicher Weise werden wir die Formel verwenden, um die Position der Zahl bis zur i-ten Position basierend auf der i-ten Ziffer zu berechnen, die im Abschnitt zum Algorithmus besprochen wird.
Bei jeder Iteration wird die Position basierend auf der aktuellen i-ten Zahl kontinuierlich aktualisiert.
Wenn wir die gesamte Zeichenfolge durchlaufen haben, geben wir den an dieser Stelle gespeicherten Wert zurück. Dies ist die Ausgabe, die wir benötigen.
C++-Code für diese Methode:
#include <bits/stdc++.h> using namespace std; //to find the position of the number with only 2,3,5 or 7 as its digits int position(string N){ int p=0; //to store the position of the number //iterating in a for loop to calculate the position for(int i=0;i<N.size();i++){ if(N[i]=='2'){ //if the digit is 2 p = p * 4 + 1; //multiplying the position by 4 and adding the position of the digit } else if(N[i]=='3'){ // if the digit is 3 p = p * 4 + 2; } else if(N[i]=='5'){ //if the digit is 5 p = p * 4 + 3; } else{ // for the case when digit is 7 p = p * 4 + 4; } } return p; //return the position of the number N } using namespace std; int main() { string N; N = "2357"; //calling the function cout<<"The position of "<<N<<" in the sequence is : "<<position(N)<<endl; N = "3327"; cout<<"The position of "<<N<<" in the sequence is : "<<position(N)<<endl; return 0; }
The position of 2357 in the sequence is : 112 The position of 3327 in the sequence is : 168
Zeitkomplexität - O(n) , wobei n die Länge der Zeichenfolge oder die Anzahl der Ziffern in der Zahl ist, da wir n-mal in der for-Schleife iterieren, um die Zahl in der angegebenen Positionsfolge zu zählen
Raumkomplexität – O(1), da wir keinen zusätzlichen Raum verwenden, um das Problem zu lösen.
In diesem Artikel wird der Algorithmus zum Ermitteln der Position der Zahl N in einer Zahlenfolge mit der Zahl 2, 3, 5 oder 7 besprochen. Wir haben diesen Algorithmus in unsere Methode implementiert, um das Problem effizient in O(n)-Zeit C++ zu lösen, ohne ihn zu verwenden jeder zusätzliche Platz.
Ich hoffe, dass Sie nach der Lektüre dieses Artikels dieses Problem verstehen und wissen, wie Sie es mit C++ lösen können.
Das obige ist der detaillierte Inhalt vonWelche Position hat n in der Zahl 2, 3, 5 und 7?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!