#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
int a, b;
cin >> a >> b; // np. 2 5
cout << "0.";
int numerator = a;
vector<int> digits; // cyfry rozwinięcia
map<int, int> seen; // reszta -> indeks cyfry
int repeat_start = -1;
int index = 0;
while (numerator != 0) {
if (seen.count(numerator)) {
repeat_start = seen[numerator]; // początek okresu
break;
}
seen[numerator] = index;
numerator *= 2;
if (numerator >= b) {
digits.push_back(1);
numerator -= b;
} else {
digits.push_back(0);
}
index++;
}
// wypisujemy wynik
if (repeat_start == -1) {
// brak okresu
for (int d : digits) cout << d;
} else {
// część nieokresowa
for (int i = 0; i < repeat_start; i++)
cout << digits[i];
cout << "(";
// część okresowa
for (int i = repeat_start; i < digits.size(); i++)
cout << digits[i];
cout << ")";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgYSwgYjsKICAgIGNpbiA+PiBhID4+IGI7ICAgICAgIC8vIG5wLiAyIDUKCiAgICBjb3V0IDw8ICIwLiI7CgogICAgaW50IG51bWVyYXRvciA9IGE7CiAgICB2ZWN0b3I8aW50PiBkaWdpdHM7ICAgICAgICAgIC8vIGN5ZnJ5IHJvendpbmnEmWNpYQogICAgbWFwPGludCwgaW50PiBzZWVuOyAgICAgICAgICAvLyByZXN6dGEgLT4gaW5kZWtzIGN5ZnJ5CiAgICBpbnQgcmVwZWF0X3N0YXJ0ID0gLTE7CgogICAgaW50IGluZGV4ID0gMDsKCiAgICB3aGlsZSAobnVtZXJhdG9yICE9IDApIHsKICAgICAgICBpZiAoc2Vlbi5jb3VudChudW1lcmF0b3IpKSB7CiAgICAgICAgICAgIHJlcGVhdF9zdGFydCA9IHNlZW5bbnVtZXJhdG9yXTsgICAvLyBwb2N6xIV0ZWsgb2tyZXN1CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgc2VlbltudW1lcmF0b3JdID0gaW5kZXg7CgogICAgICAgIG51bWVyYXRvciAqPSAyOwogICAgICAgIGlmIChudW1lcmF0b3IgPj0gYikgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDEpOwogICAgICAgICAgICBudW1lcmF0b3IgLT0gYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDApOwogICAgICAgIH0KICAgICAgICBpbmRleCsrOwogICAgfQoKICAgIC8vIHd5cGlzdWplbXkgd3luaWsKICAgIGlmIChyZXBlYXRfc3RhcnQgPT0gLTEpIHsKICAgICAgICAvLyBicmFrIG9rcmVzdQogICAgICAgIGZvciAoaW50IGQgOiBkaWdpdHMpIGNvdXQgPDwgZDsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gY3rEmcWbxIcgbmllb2tyZXNvd2EKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdF9zdGFydDsgaSsrKQogICAgICAgICAgICBjb3V0IDw8IGRpZ2l0c1tpXTsKCiAgICAgICAgY291dCA8PCAiKCI7CgogICAgICAgIC8vIGN6xJnFm8SHIG9rcmVzb3dhCiAgICAgICAgZm9yIChpbnQgaSA9IHJlcGVhdF9zdGFydDsgaSA8IGRpZ2l0cy5zaXplKCk7IGkrKykKICAgICAgICAgICAgY291dCA8PCBkaWdpdHNbaV07CgogICAgICAgIGNvdXQgPDwgIikiOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==