ok
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
bool pos = true;
if (long(numerator) * long(denominator) < 0) pos = false;
long n = abs(long(numerator));
long d = abs(long(denominator));
long int_temp = n / d;
stringstream ss;
ss << int_temp;
string ret;
ss >> ret;
ss.clear();
long r = n % d;
if (r == 0) return pos? ret : '-' + ret;
ret += '.';
string str_r;
unordered_map<int, int> mp;
for (int i = 0; r != 0; ++i) {
auto it = mp.find(r);
if (it != mp.end()) {
ret += str_r.substr(0, mp[r] - 0) + '(' + str_r.substr(mp[r]) + ')';
break;
}
mp[r] = i;
long temp = (r * 10) / d;
ss << temp;
string str_temp;
ss >> str_temp;
ss.clear();
str_r += str_temp;
r = (r * 10) % d;
}
if (r == 0) ret += str_r;
return pos? ret : '-' + ret;
}
};