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
Freigeben: 2023-08-26 21:45:19
nach vorne
1022 Leute haben es durchsucht

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
Nach dem Login kopieren

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";
}
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe

14
Nach dem Login kopieren
Nach dem Login kopieren

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";
}
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe

14
Nach dem Login kopieren
Nach dem Login kopieren

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!

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