166. 分数到小数
class Solution {
public:
string fractionToDecimal(int n, int d) {
typedef long long LL;
LL x = n, y = d;
if (x % y == 0) return to_string(x / y);
string res;
if ((x < 0) ^ (y < 0)) res += '-';
x = abs(x), y = abs(y);
res += to_string(x / y);
x %= y;
res += '.';
unordered_map<LL, int> hash;
while (x) {
hash[x] = res.size();
x *= 10;
res += to_string(x / y);
x %= y;
if (hash.count(x)) {
res = res.substr(0, hash[x]) + '(' + res.substr(hash[x]) + ')';
break;
}
}
return res;
}
};