首页 > 其他分享 >166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

时间:2022-12-01 20:09:38浏览次数:64  
标签:return string res Decimal denominator numerator long 166 Recurring


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)".

Hint:

  1. No scary math, just apply elementary math knowledge. Still remember how to perform a long division?
  2. Try a long division on 4/9, the repeating part is obvious. Now try 4/333. Do you see a pattern?
  3. Be wary of edge cases! List out as many test cases as you can think of and test your code thoroughly.

Credits:

Special thanks to ​​@Shangrila​​ for adding this problem and creating all test cases.


class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
if (numerator == 0) return"0";
string res;
if (numerator < 0 ^ denominator < 0) res += '-';
long long n = numerator;
n=abs(n);
long long d = denominator;
d=abs(d);
long long integer = n / d;
res += to_string(integer);
long long r = n%d;
if (r != 0){
res += '.';
}
else{
return res;
}
map<long long, int> m;
while (r){
if (m.count(r)){
res.insert(m[r], "(");
res += ')';
break;
}
m[r] = res.size();//记录出现该余数的位置
r *= 10;
res += to_string(r / d);

r = r%d;
}
return res;
}
};



标签:return,string,res,Decimal,denominator,numerator,long,166,Recurring
From: https://blog.51cto.com/u_15899184/5904041

相关文章