#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
long long a, b;
cin >> a >> b; // nieskracalny ułamek właściwy a/b
cout << "0.";
long long numerator = a;
map<long long, int> seen; // reszta -> indeks cyfry
vector<int> digits; // cyfry części ułamkowej
int index = 0;
int repeat_start = -1;
while (numerator != 0) {
if (seen.count(numerator)) {
repeat_start = seen[numerator];
break;
}
seen[numerator] = index;
numerator *= 2;
if (numerator >= b) {
digits.push_back(1);
numerator -= b;
} else {
digits.push_back(0);
}
index++;
}
// wypisywanie rozwinięcia
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgYSwgYjsKICAgIGNpbiA+PiBhID4+IGI7ICAvLyBuaWVza3JhY2FsbnkgdcWCYW1layB3xYJhxZtjaXd5IGEvYgoKICAgIGNvdXQgPDwgIjAuIjsKCiAgICBsb25nIGxvbmcgbnVtZXJhdG9yID0gYTsKICAgIG1hcDxsb25nIGxvbmcsIGludD4gc2VlbjsgIC8vIHJlc3p0YSAtPiBpbmRla3MgY3lmcnkKICAgIHZlY3RvcjxpbnQ+IGRpZ2l0czsgICAgICAgIC8vIGN5ZnJ5IGN6xJnFm2NpIHXFgmFta293ZWoKCiAgICBpbnQgaW5kZXggPSAwOwogICAgaW50IHJlcGVhdF9zdGFydCA9IC0xOwoKICAgIHdoaWxlIChudW1lcmF0b3IgIT0gMCkgewogICAgICAgIGlmIChzZWVuLmNvdW50KG51bWVyYXRvcikpIHsKICAgICAgICAgICAgcmVwZWF0X3N0YXJ0ID0gc2VlbltudW1lcmF0b3JdOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgc2VlbltudW1lcmF0b3JdID0gaW5kZXg7CgogICAgICAgIG51bWVyYXRvciAqPSAyOwogICAgICAgIGlmIChudW1lcmF0b3IgPj0gYikgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDEpOwogICAgICAgICAgICBudW1lcmF0b3IgLT0gYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWdpdHMucHVzaF9iYWNrKDApOwogICAgICAgIH0KCiAgICAgICAgaW5kZXgrKzsKICAgIH0KCiAgICAvLyB3eXBpc3l3YW5pZSByb3p3aW5pxJljaWEKICAgIGlmIChyZXBlYXRfc3RhcnQgPT0gLTEpIHsKICAgICAgICAvLyBicmFrIG9rcmVzdQogICAgICAgIGZvciAoaW50IGQgOiBkaWdpdHMpIGNvdXQgPDwgZDsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gY3rEmcWbxIcgbmllb2tyZXNvd2EKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdF9zdGFydDsgaSsrKQogICAgICAgICAgICBjb3V0IDw8IGRpZ2l0c1tpXTsKCiAgICAgICAgY291dCA8PCAiKCI7CgogICAgICAgIC8vIGN6xJnFm8SHIG9rcmVzb3dhCiAgICAgICAgZm9yIChpbnQgaSA9IHJlcGVhdF9zdGFydDsgaSA8IGRpZ2l0cy5zaXplKCk7IGkrKykKICAgICAgICAgICAgY291dCA8PCBkaWdpdHNbaV07CgogICAgICAgIGNvdXQgPDwgIikiOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==