In dem gegebenen Problem müssen wir den Wert einer Zahl finden, bei der alle Bits im gegebenen Bereich L, R gesetzt sind. Zum Beispiel −
Input: L = 1, R = 5 Output: 62 Explanation: representation of given L and R in binary form is 0..0111110 Input: L = 1, R = 4 Output: 30 Explanation: representation of given L and R in binary form is 0..11110
In dem gegebenen Problem werden wir zwei Methoden diskutieren, die Brute-Force-Methode und die effiziente Methode.
Bei dieser Methode iterieren wir einfach über den angegebenen Bereich und addieren alle Zweierpotenzen im angegebenen Bereich und das wird unsere Antwort sein.
#include<bits/stdc++.h> using namespace std; int main() { int L = 1, R = 3; // the given range int ans = 0; // our answer for(int i = L; i <= R; i++) // traversing through the whole range ans += pow(2, i); // adding values to the answer. cout << ans << "\n"; }
14
Bei dieser Methode iterieren wir einfach über den Bereich und addieren einfach die Potenzen von 2 der Zahlen im Bereich. Die zeitliche Komplexität dieses Programms beträgt O(N), wobei N die Größe unseres Bereichs ist. Aber wir können die Zeitkomplexität weiter verbessern, indem wir Bitwissen auf das gegebene Problem anwenden.
Bei dieser Methode erstellen wir einfach eine Formel, um unsere Antwort zu berechnen.
#include<bits/stdc++.h> using namespace std; int main() { int L = 1, R = 3; // the given range int ans = 0; // our answer for(int i = L; i <= R; i++) // traversing through the whole range ans += pow(2, i); // adding values to the answer. cout << ans << "\n"; }
14
Bei dieser Methode formulieren wir eine Formel zur Berechnung der Antwort.
Wie Sie wissen, müssen wir Zahlen mit gesetzten Bits in einem bestimmten Bereich zählen, also finden wir bei dieser Methode eine Zahl, bei der alle Bits von 0 bis R gesetzt sind. Dann müssen wir eine Zahl mit allen gesetzten Bits von 1 bis (L-1) subtrahieren, also formulieren wir diese Beobachtung. Die Gesamtzeitkomplexität des angegebenen Codes beträgt O(1), d. h. konstante Zeitkomplexität, was bedeutet, dass wir jede Antwort in konstanter Zeit berechnen können.
In diesem Artikel wird ein Programm für „nur Zahlen mit gesetzten Bits zwischen dem L-ten und dem R-ten Index“ geschrieben. Wir haben auch C++-Programme und vollständige Methoden (allgemein und effizient) gelernt, um dieses Problem zu lösen. Wir können das gleiche Programm in anderen Sprachen wie C, Java, Python und anderen schreiben. Ich hoffe, Sie finden diesen Artikel hilfreich.
Das obige ist der detaillierte Inhalt vonFinden Sie mit C++ die Zahl, bei der nur Bits zwischen dem L-ten und dem R-ten Index gesetzt sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!