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