#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;
}
// obliczamy ile bitów potrzebujemy
int k = 0;
unsigned long long tmp = b;
while (tmp > 1) {
tmp >>= 1;
k++;
}
// tworzenie binarnego rozwinięcia
string binary = "0.";
for (int i = 0; i < k; i++) {
a *= 2;
if (a >= b) {
binary += '1';
a -= b;
} else {
binary += '0';
}
}
cout << "Rozwiniecie binarne: " << binary << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFNwcmF3ZHphIGN6eSBsaWN6YmEgamVzdCBwb3TEmWfEhSAyCmJvb2wgaXNQb3dlck9mVHdvKHVuc2lnbmVkIGxvbmcgbG9uZyB4KSB7CiAgICByZXR1cm4geCAmJiAhKHggJiAoeCAtIDEpKTsKfQoKaW50IG1haW4oKSB7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgYSwgYjsKICAgIGNvdXQgPDwgIlBvZGFqIGxpY3puaWsgYSBpIG1pYW5vd25payBiOiAiOwogICAgY2luID4+IGEgPj4gYjsKCiAgICBpZiAoIWlzUG93ZXJPZlR3byhiKSkgewogICAgICAgIGNvdXQgPDwgIk1pYW5vd25payBuaWUgamVzdCBwb3TEmWdhIGxpY3pieSAyISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBvYmxpY3phbXkgaWxlIGJpdMOzdyBwb3RyemVidWplbXkKICAgIGludCBrID0gMDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0bXAgPSBiOwogICAgd2hpbGUgKHRtcCA+IDEpIHsKICAgICAgICB0bXAgPj49IDE7CiAgICAgICAgaysrOwogICAgfQoKICAgIC8vIHR3b3J6ZW5pZSBiaW5hcm5lZ28gcm96d2luacSZY2lhCiAgICBzdHJpbmcgYmluYXJ5ID0gIjAuIjsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewogICAgICAgIGEgKj0gMjsKICAgICAgICBpZiAoYSA+PSBiKSB7CiAgICAgICAgICAgIGJpbmFyeSArPSAnMSc7CiAgICAgICAgICAgIGEgLT0gYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBiaW5hcnkgKz0gJzAnOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8ICJSb3p3aW5pZWNpZSBiaW5hcm5lOiAiIDw8IGJpbmFyeSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K