#include <iostream>
#include <string>
using namespace std;
// Funkcja robiąca rozwinięcie binarne ułamka p/q,
// gdzie q = 2^k
string binaryExpansion(int p, int q) {
string result = "0.";
// Sprawdzenie czy q jest potęgą dwójki
if ((q & (q - 1)) != 0) {
return "Blad: mianownik nie jest potega dwojki.";
}
int k = 0;
int tmp = q;
while (tmp > 1) {
tmp >>= 1;
k++;
}
for (int i = 0; i < k; ++i) {
p *= 2;
if (p >= q) {
result += '1';
p -= q;
} else {
result += '0';
}
}
return result;
}
int main() {
int p, q;
cout << "Podaj licznik p: ";
cin >> p;
cout << "Podaj mianownik q (potega 2): ";
cin >> q;
cout << "Rozwiniecie binarne: " << binaryExpansion(p, q) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSByb2JpxIVjYSByb3p3aW5pxJljaWUgYmluYXJuZSB1xYJhbWthIHAvcSwKLy8gZ2R6aWUgcSA9IDJeawpzdHJpbmcgYmluYXJ5RXhwYW5zaW9uKGludCBwLCBpbnQgcSkgewogICAgc3RyaW5nIHJlc3VsdCA9ICIwLiI7CgogICAgLy8gU3ByYXdkemVuaWUgY3p5IHEgamVzdCBwb3TEmWfEhSBkd8OzamtpCiAgICBpZiAoKHEgJiAocSAtIDEpKSAhPSAwKSB7CiAgICAgICAgcmV0dXJuICJCbGFkOiBtaWFub3duaWsgbmllIGplc3QgcG90ZWdhIGR3b2praS4iOwogICAgfQoKICAgIGludCBrID0gMDsKICAgIGludCB0bXAgPSBxOwogICAgd2hpbGUgKHRtcCA+IDEpIHsKICAgICAgICB0bXAgPj49IDE7CiAgICAgICAgaysrOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgKytpKSB7CiAgICAgICAgcCAqPSAyOwogICAgICAgIGlmIChwID49IHEpIHsKICAgICAgICAgICAgcmVzdWx0ICs9ICcxJzsKICAgICAgICAgICAgcCAtPSBxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdCArPSAnMCc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgaW50IHAsIHE7CiAgICBjb3V0IDw8ICJQb2RhaiBsaWN6bmlrIHA6ICI7CiAgICBjaW4gPj4gcDsKICAgIGNvdXQgPDwgIlBvZGFqIG1pYW5vd25payBxIChwb3RlZ2EgMik6ICI7CiAgICBjaW4gPj4gcTsKCiAgICBjb3V0IDw8ICJSb3p3aW5pZWNpZSBiaW5hcm5lOiAiIDw8IGJpbmFyeUV4cGFuc2lvbihwLCBxKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K