码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Fraction to Recurring Decimal

时间:2014-12-17 12:35:20      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   sp   for   on   div   

一位一位的算嘛,如果出现了重复的余数那么就是循环节开始啦。

用hashtable记录下位置,好插入括号。

注意负数。

 

class Solution {
public:
    string fractionToDecimal(int numerator, int denominator) {
        int sign1 = numerator >= 0 ? 1 : -1;
        int sign2 = denominator >= 0 ? 1 : -1;
        long long num = (long long)numerator;
        long long den = (long long)denominator;
        num = abs(num);
        den = abs(den);
        long long d = num / den;
        long long rem = num % den;
        unordered_map<long long, int> rec;
        string ans = to_string(d);
        if (sign1 * sign2 == -1 && (d > 0 || rem > 0)) ans = "-" + ans;
        if (rem == 0) return ans;
        ans = ans + ".";
        string r = "";
        for (int pos = 0; rem != 0; pos++) {
            if (rec.find(rem) != rec.end()) {
                r.insert(rec[rem], "(");
                r = r + ")";
                return ans + r;
            }
            rec[rem] = pos;
            r = r + to_string((rem * 10) / den);
            rem = (rem * 10) % den;
        }
        return ans + r;
    }
};

 

[leetcode]Fraction to Recurring Decimal

标签:style   blog   io   color   os   sp   for   on   div   

原文地址:http://www.cnblogs.com/x1957/p/4168920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!