#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
long long a, b; // licznik i mianownik
cin >> a >> b;
// zakładamy ułamek właściwy
cout << "Rozwiniecie binarne: 0.";
long long numerator = a;
map<long long, int> seen; // remainder -> position
vector<int> digits; // kolejne cyfry binarne
int pos = 0;
int repeat_start = -1;
while (numerator != 0) {
// jeśli już widzieliśmy resztę -> zaczyna się okres
if (seen.find(numerator) != seen.end()) {
repeat_start = seen[numerator];
break;
}
seen[numerator] = pos;
numerator *= 2;
if (numerator >= b) {
digits.push_back(1);
numerator -= b;
} else {
digits.push_back(0);
}
pos++;
}
// wypisanie wyniku
if (numerator == 0) {
// brak okresu
for (int d : digits) cout << d;
cout << "\n";
} else {
// mamy okres
for (int i = 0; i < repeat_start; i++)
cout << digits[i];
cout << "(";
for (int i = repeat_start; i < (int)digits.size(); i++)
cout << digits[i];
cout << ")\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgYSwgYjsgLy8gbGljem5payBpIG1pYW5vd25pawogICAgY2luID4+IGEgPj4gYjsKCiAgICAvLyB6YWvFgmFkYW15IHXFgmFtZWsgd8WCYcWbY2l3eQogICAgY291dCA8PCAiUm96d2luaWVjaWUgYmluYXJuZTogMC4iOwoKICAgIGxvbmcgbG9uZyBudW1lcmF0b3IgPSBhOwogICAgbWFwPGxvbmcgbG9uZywgaW50PiBzZWVuOyAgICAgIC8vIHJlbWFpbmRlciAtPiBwb3NpdGlvbgogICAgdmVjdG9yPGludD4gZGlnaXRzOyAgICAgICAgICAgIC8vIGtvbGVqbmUgY3lmcnkgYmluYXJuZQoKICAgIGludCBwb3MgPSAwOwogICAgaW50IHJlcGVhdF9zdGFydCA9IC0xOwoKICAgIHdoaWxlIChudW1lcmF0b3IgIT0gMCkgewogICAgICAgIC8vIGplxZtsaSBqdcW8IHdpZHppZWxpxZtteSByZXN6dMSZIC0+IHphY3p5bmEgc2nEmSBva3JlcwogICAgICAgIGlmIChzZWVuLmZpbmQobnVtZXJhdG9yKSAhPSBzZWVuLmVuZCgpKSB7CiAgICAgICAgICAgIHJlcGVhdF9zdGFydCA9IHNlZW5bbnVtZXJhdG9yXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzZWVuW251bWVyYXRvcl0gPSBwb3M7CgogICAgICAgIG51bWVyYXRvciAqPSAyOwogICAgICAgIGlmIChudW1lcmF0b3IgPj0gYikgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDEpOwogICAgICAgICAgICBudW1lcmF0b3IgLT0gYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDApOwogICAgICAgIH0KICAgICAgICBwb3MrKzsKICAgIH0KCiAgICAvLyB3eXBpc2FuaWUgd3luaWt1CiAgICBpZiAobnVtZXJhdG9yID09IDApIHsKICAgICAgICAvLyBicmFrIG9rcmVzdQogICAgICAgIGZvciAoaW50IGQgOiBkaWdpdHMpIGNvdXQgPDwgZDsKICAgICAgICBjb3V0IDw8ICJcbiI7CiAgICB9IGVsc2UgewogICAgICAgIC8vIG1hbXkgb2tyZXMKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdF9zdGFydDsgaSsrKQogICAgICAgICAgICBjb3V0IDw8IGRpZ2l0c1tpXTsKCiAgICAgICAgY291dCA8PCAiKCI7CiAgICAgICAgZm9yIChpbnQgaSA9IHJlcGVhdF9zdGFydDsgaSA8IChpbnQpZGlnaXRzLnNpemUoKTsgaSsrKQogICAgICAgICAgICBjb3V0IDw8IGRpZ2l0c1tpXTsKICAgICAgICBjb3V0IDw8ICIpXG4iOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==