10-03每日一题:Leetcode 166. 分数到小数

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;
    }
};
上一篇:vue2自定义指令动态添加修饰符和value


下一篇:PAT甲级 - 1152 Google Recruitment (20 分) ( 素数判断 + substr函数 )