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

166 Fraction to Recurring Decimal 分数到小数

时间:2018-04-07 01:11:47      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:abs   res   pre   log   problems   blog   http   solution   pos   

给定两个整数,分别表示分数的分子和分母,返回字符串格式的小数。
如果小数部分为循环小数,则将重复部分括在括号内。
例如,
    给出 分子 = 1, 分母 = 2,返回 "0.5".
    给出 分子 = 2, 分母 = 1,返回 "2".
    给出 分子 = 2, 分母 = 3,返回 "0.(6)".

详见:https://leetcode.com/problems/fraction-to-recurring-decimal/description/

class Solution {
public:
    string fractionToDecimal(int numerator, int denominator) {
        int s1 = numerator >= 0 ? 1 : -1;
        int s2 = denominator >= 0 ? 1 : -1;
        long long num = abs( (long long)numerator );
        long long den = abs( (long long)denominator );
        long long out = num / den;
        long long rem = num % den;
        unordered_map<long long, int> m;
        string res = to_string(out);
        if (s1 * s2 == -1 && (out > 0 || rem > 0))
        {
            res = "-" + res;
        }
        if (rem == 0)
        {
            return res;
        }
        res += ".";
        string s = "";
        int pos = 0;
        while (rem != 0) 
        {
            if (m.find(rem) != m.end())
            {
                s.insert(m[rem], "(");
                s += ")";
                return res + s;
            }
            m[rem] = pos;
            s += to_string((rem * 10) / den);
            rem = (rem * 10) % den;
            ++pos;
        }
        return res + s;
    }
};

 详见:https://www.cnblogs.com/grandyang/p/4238577.html

166 Fraction to Recurring Decimal 分数到小数

标签:abs   res   pre   log   problems   blog   http   solution   pos   

原文地址:https://www.cnblogs.com/xidian2014/p/8729385.html

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