C++ :: Aufgabe #352
1 Lösung
Binärzahlen ohne zwei aufeinanderfolgende Nullen
Anfänger - C++
von hollst
- 09.11.2020 um 15:10 Uhr
Erstelle eine Liste der ersten 1.000 Natürlichen Zahlen, die in ihrer binären Darstellung keine zwei aufeinanderfolgende Nullen haben.
Kleine Unterstützung zur Prüfung: Die ersten 10 Zahlen der Liste sind: 0, 1, 2, 3, 5, 6, 7, 10, 11 und 13. Das 1.000ste (letzte) Element der Liste ist 10.965.
Viel Spaß!
Kleine Unterstützung zur Prüfung: Die ersten 10 Zahlen der Liste sind: 0, 1, 2, 3, 5, 6, 7, 10, 11 und 13. Das 1.000ste (letzte) Element der Liste ist 10.965.
Viel Spaß!
Lösungen:
C++ 17
C-Code
#include <iostream>
#include <string>
using namespace std;
bool is_double_zero(string s) {
auto z{ 0 };
for (const auto& i : s) {
if (i == '0') z++;
else z = 0;
if (z == 2) return true;
}
return false;
}
string to_binary(int n) {
string r;
while (n != 0) {
r += (n % 2 == 0 ? "0" : "1");
n /= 2;
}
return r;
}
int main() {
for (size_t i = 1; i < 10'000; i++) {
auto b{ to_binary(i) };
if(!is_double_zero(b))
cout << i << ": " << b << endl;
}
}
