#include <iostream>
#include <algorithm>
using namespace std;
long long gcd(long long a, long long b) {
while (b != 0) {
long long t = a % b;
a = b;
b = t;
}
return a;
}
bool isPowerOfTwo(long long n) {
return (n > 0 && (n & (n - 1)) == 0);
}
int main() {
long long p, q;
cout << "Podaj licznik i mianownik: ";
cin >> p >> q;
// Ułamek właściwy?
if (p >= q) {
cout << "To nie jest ułamek właściwy.\n";
return 0;
}
// Sprowadzanie do postaci nieskracalnej
long long g = gcd(p, q);
p /= g;
q /= g;
// Czy mianownik jest potęgą 2?
if (!isPowerOfTwo(q)) {
cout << "Mianownik nie jest potega liczby 2.\n";
return 0;
}
// Liczenie rozwinięcia binarnego
cout << "Rozwiniecie binarne ulamka " << p << "/" << q << " = 0.";
// Ponieważ q = 2^k, rozwinięcie ma dokładnie k cyfr
while (q > 1) {
p *= 2;
if (p >= q) {
cout << "1";
p -= q;
} else {
cout << "0";
}
q /= 2;
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBsb25nIGdjZChsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIHdoaWxlIChiICE9IDApIHsKICAgICAgICBsb25nIGxvbmcgdCA9IGEgJSBiOwogICAgICAgIGEgPSBiOwogICAgICAgIGIgPSB0OwogICAgfQogICAgcmV0dXJuIGE7Cn0KCmJvb2wgaXNQb3dlck9mVHdvKGxvbmcgbG9uZyBuKSB7CiAgICByZXR1cm4gKG4gPiAwICYmIChuICYgKG4gLSAxKSkgPT0gMCk7Cn0KCmludCBtYWluKCkgewogICAgbG9uZyBsb25nIHAsIHE7CiAgICBjb3V0IDw8ICJQb2RhaiBsaWN6bmlrIGkgbWlhbm93bmlrOiAiOwogICAgY2luID4+IHAgPj4gcTsKCiAgICAvLyBVxYJhbWVrIHfFgmHFm2Npd3k/CiAgICBpZiAocCA+PSBxKSB7CiAgICAgICAgY291dCA8PCAiVG8gbmllIGplc3QgdcWCYW1layB3xYJhxZtjaXd5LlxuIjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBTcHJvd2FkemFuaWUgZG8gcG9zdGFjaSBuaWVza3JhY2FsbmVqCiAgICBsb25nIGxvbmcgZyA9IGdjZChwLCBxKTsKICAgIHAgLz0gZzsKICAgIHEgLz0gZzsKCiAgICAvLyBDenkgbWlhbm93bmlrIGplc3QgcG90xJlnxIUgMj8KICAgIGlmICghaXNQb3dlck9mVHdvKHEpKSB7CiAgICAgICAgY291dCA8PCAiTWlhbm93bmlrIG5pZSBqZXN0IHBvdGVnYSBsaWN6YnkgMi5cbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gTGljemVuaWUgcm96d2luacSZY2lhIGJpbmFybmVnbwogICAgY291dCA8PCAiUm96d2luaWVjaWUgYmluYXJuZSB1bGFta2EgIiA8PCBwIDw8ICIvIiA8PCBxIDw8ICIgPSAwLiI7CgogICAgLy8gUG9uaWV3YcW8IHEgPSAyXmssIHJvendpbmnEmWNpZSBtYSBkb2vFgmFkbmllIGsgY3lmcgogICAgd2hpbGUgKHEgPiAxKSB7CiAgICAgICAgcCAqPSAyOwogICAgICAgIGlmIChwID49IHEpIHsKICAgICAgICAgICAgY291dCA8PCAiMSI7CiAgICAgICAgICAgIHAgLT0gcTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8ICIwIjsKICAgICAgICB9CiAgICAgICAgcSAvPSAyOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==