C++ :: Aufgabe #352

1 Lösung Lösung öffentlich

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ß!

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 25.04.2021 um 16:19 Uhr
C++ 17
Quellcode ausblenden 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;
    }
}