Leetcode 166 Fraction to Recurring Decimal
Posted 暴力的轮胎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 166 Fraction to Recurring Decimal相关的知识,希望对你有一定的参考价值。
Description:
Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.
If the fractional part is repeating, enclose the repeating part in parentheses.
For example,
- Given numerator = 1, denominator = 2, return "0.5".
- Given numerator = 2, denominator = 1, return "2".
- Given numerator = 2, denominator = 3, return "0.(6)".
Solution:
long division: 长除法
Trick: Determining whether two nums have different sign(+ or -) can use follow codes:
if((n<0)^(d<0)) //异号 or if((n>0)^(d>0)) //异号
Above code avoiding product‘s value overflow.
Code:
class Solution { public: string fractionToDecimal(int numerator, int denominator) { if(!numerator) return "0"; long long n = numerator, d = denominator; string ret = ""; if((n<0)^(d<0)) ret += ‘-‘; if(n < 0) n = -n; if(d < 0) d = -d; ret += to_string(n/d); if(n % d == 0){ return ret; }ret += ‘.‘; map<long long, int>hash; for(long long r = n % d; r; r %= d){ if(hash.find(r) != hash.end()){ ret.insert(hash[r],"("); ret += ")"; return ret; } hash[r] = ret.size(); r *= 10; ret += to_string(r / d); } } };
以上是关于Leetcode 166 Fraction to Recurring Decimal的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 166. Fraction to Recurring Decimal
LeetCode 166. Fraction to Recurring Decimal(模拟)
166. Fraction to Recurring Decimal
166 Fraction to Recurring Decimal 分数到小数