#include<bits/stdc++.h>
using namespace std;
string solve(int numerator, int denominator) {
int64_t n = numerator, d = denominator;
// zero numerator
if (n == 0) return "0";
string res;
// determine the sign
if (n < 0 ^ d < 0) res += '-';
// remove sign of operands
n = abs(n), d = abs(d);
// append integral part
res += to_string((n / d));
// in case no fractional part
if (n % d == 0) return res;
res += '.';
unordered_map<int, int> map;
// simulate the division process
for (int64_t r = n % d; r; r %= d) {
// meet a known remainder
// so we reach the end of the repeating part
if (map.find(r) != map.end()) {
// insert '(' at the start position where we first saw the remainder
res.insert(map[r], 1, '(');
res += ')';
break;
}
// the remainder is first seen
// remember the current position for it
map[r] = res.size();
r *= 10;
// append the quotient digit
res.push_back((char)('0' + (r / d)));
}
return res;
}
int main() {
cout << solve(1, 2) << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBzb2x2ZShpbnQgbnVtZXJhdG9yLCBpbnQgZGVub21pbmF0b3IpIHsKICAgIAoJaW50NjRfdCBuID0gbnVtZXJhdG9yLCBkID0gZGVub21pbmF0b3I7CiAgICAvLyB6ZXJvIG51bWVyYXRvcgogICAgaWYgKG4gPT0gMCkgcmV0dXJuICIwIjsKCiAgICBzdHJpbmcgcmVzOwogICAgLy8gZGV0ZXJtaW5lIHRoZSBzaWduCiAgICBpZiAobiA8IDAgXiBkIDwgMCkgcmVzICs9ICctJzsKCiAgICAvLyByZW1vdmUgc2lnbiBvZiBvcGVyYW5kcwogICAgbiA9IGFicyhuKSwgZCA9IGFicyhkKTsKCgkvLyBhcHBlbmQgaW50ZWdyYWwgcGFydAogICAgcmVzICs9IHRvX3N0cmluZygobiAvIGQpKTsKCiAgICAvLyBpbiBjYXNlIG5vIGZyYWN0aW9uYWwgcGFydAogICAgaWYgKG4gJSBkID09IDApIHJldHVybiByZXM7CgkKCXJlcyArPSAnLic7CgogICAgdW5vcmRlcmVkX21hcDxpbnQsIGludD4gbWFwOwoKICAgIC8vIHNpbXVsYXRlIHRoZSBkaXZpc2lvbiBwcm9jZXNzCiAgICBmb3IgKGludDY0X3QgciA9IG4gJSBkOyByOyByICU9IGQpIHsKCiAgICAgICAgLy8gbWVldCBhIGtub3duIHJlbWFpbmRlcgogICAgICAgIC8vIHNvIHdlIHJlYWNoIHRoZSBlbmQgb2YgdGhlIHJlcGVhdGluZyBwYXJ0CiAgICAgICAgaWYgKG1hcC5maW5kKHIpICE9IG1hcC5lbmQoKSkgewogICAgICAgICAgICAvLyBpbnNlcnQgJygnIGF0IHRoZSBzdGFydCBwb3NpdGlvbiB3aGVyZSB3ZSBmaXJzdCBzYXcgdGhlIHJlbWFpbmRlcgogICAgICAgICAgICByZXMuaW5zZXJ0KG1hcFtyXSwgMSwgJygnKTsKICAgICAgICAgICAgcmVzICs9ICcpJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvLyB0aGUgcmVtYWluZGVyIGlzIGZpcnN0IHNlZW4KICAgICAgICAvLyByZW1lbWJlciB0aGUgY3VycmVudCBwb3NpdGlvbiBmb3IgaXQKICAgICAgICBtYXBbcl0gPSByZXMuc2l6ZSgpOwoKICAgICAgICByICo9IDEwOwoKICAgICAgICAvLyBhcHBlbmQgdGhlIHF1b3RpZW50IGRpZ2l0CiAgICAgICAgcmVzLnB1c2hfYmFjaygoY2hhcikoJzAnICsgKHIgLyBkKSkpOwogICAgfQoKICAgIHJldHVybiByZXM7ICAgIAp9CiAgICAgICAgICAgICAKaW50IG1haW4oKSB7CgkKCWNvdXQgPDwgc29sdmUoMSwgMikgPDwgZW5kbDsKCXJldHVybiAwOwp9Cg==