Heim >Backend-Entwicklung >C++ >Finden Sie mit C++ die Zahl, bei der nur Bits zwischen dem L-ten und dem R-ten Index gesetzt sind

Finden Sie mit C++ die Zahl, bei der nur Bits zwischen dem L-ten und dem R-ten Index gesetzt sind

PHPz
PHPznach vorne
2023-08-26 21:45:191064Durchsuche

Finden Sie mit C++ die Zahl, bei der nur Bits zwischen dem L-ten und dem R-ten Index gesetzt sind

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

Methoden, um die Lösung zu finden

In dem gegebenen Problem werden wir zwei Methoden diskutieren, die Brute-Force-Methode und die effiziente Methode.

Brute-Force-Methode

Bei dieser Methode iterieren wir einfach über den angegebenen Bereich und addieren alle Zweierpotenzen im angegebenen Bereich und das wird unsere Antwort sein.

Beispiel

#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";
}

Ausgabe

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.

Effiziente Methode

Bei dieser Methode erstellen wir einfach eine Formel, um unsere Antwort zu berechnen.

Beispiel

#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";
}

Ausgabe

14

Bei dieser Methode formulieren wir eine Formel zur Berechnung der Antwort.

Erklärung des obigen Codes

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.

Fazit

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!

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