3
string fractionToDecimal(int numerator, int denominator) {4
unordered_map<int, int> umap;6
if ((double)numerator / (double)denominator < 0) result.push_back('-');7
long long l_numerator = numerator > 0 ? numerator : -(long long)numerator;8
long long l_denominator = denominator > 0 ? denominator : -(long long)denominator;9
long long quotient = l_numerator / l_denominator;10
long long remainder = l_numerator % l_denominator;11
result.append(to_string(quotient));12
if (remainder == 0) return result;13
result.push_back('.');14
int position = result.size();15
umap[remainder] = position++;16
while (remainder != 0) {17
l_numerator = remainder * 10;18
quotient = l_numerator / l_denominator;19
remainder = l_numerator % l_denominator;20
char digit = '0' + quotient;21
result.push_back(digit);22
if (umap.find(remainder) != umap.end()) {23
result.insert(umap[remainder], 1, '(');24
result.push_back(')');27
umap[remainder] = position++;