#include <iostream>
#include <string>
using namespace std;
// Sprawdza czy liczba jest potęgą 2
bool isPowerOfTwo(unsigned long long x) {
return x && !(x & (x - 1));
}
int main() {
unsigned long long a, b;
cout << "Podaj licznik a i mianownik b: ";
cin >> a >> b;
if (!isPowerOfTwo(b)) {
cout << "Mianownik nie jest potęga liczby 2!" << endl;
return 1;
}
if (a == 0) {
cout << "0.0" << endl;
return 0;
}
// liczba bitów po przecinku = log2(b)
int k = 0;
unsigned long long t = b;
while (t > 1) {
t >>= 1;
k++;
}
string wynik = "0.";
for (int i = 0; i < k; i++) {
a *= 2;
if (a >= b) {
wynik += '1';
a -= b;
} else {
wynik += '0';
}
}
cout << "Rozwiniecie binarne: " << wynik << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFNwcmF3ZHphIGN6eSBsaWN6YmEgamVzdCBwb3TEmWfEhSAyCmJvb2wgaXNQb3dlck9mVHdvKHVuc2lnbmVkIGxvbmcgbG9uZyB4KSB7CiAgICByZXR1cm4geCAmJiAhKHggJiAoeCAtIDEpKTsKfQoKaW50IG1haW4oKSB7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgYSwgYjsKICAgIGNvdXQgPDwgIlBvZGFqIGxpY3puaWsgYSBpIG1pYW5vd25payBiOiAiOwogICAgY2luID4+IGEgPj4gYjsKCiAgICBpZiAoIWlzUG93ZXJPZlR3byhiKSkgewogICAgICAgIGNvdXQgPDwgIk1pYW5vd25payBuaWUgamVzdCBwb3TEmWdhIGxpY3pieSAyISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoYSA9PSAwKSB7CiAgICAgICAgY291dCA8PCAiMC4wIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIGxpY3piYSBiaXTDs3cgcG8gcHJ6ZWNpbmt1ID0gbG9nMihiKQogICAgaW50IGsgPSAwOwogICAgdW5zaWduZWQgbG9uZyBsb25nIHQgPSBiOwogICAgd2hpbGUgKHQgPiAxKSB7CiAgICAgICAgdCA+Pj0gMTsKICAgICAgICBrKys7CiAgICB9CgogICAgc3RyaW5nIHd5bmlrID0gIjAuIjsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewogICAgICAgIGEgKj0gMjsKICAgICAgICBpZiAoYSA+PSBiKSB7CiAgICAgICAgICAgIHd5bmlrICs9ICcxJzsKICAgICAgICAgICAgYSAtPSBiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHd5bmlrICs9ICcwJzsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCAiUm96d2luaWVjaWUgYmluYXJuZTogIiA8PCB3eW5payA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K