166 Fraction to Recurring Decimal 分數到小數
阿新 • • 發佈:2018-04-07
rip amp scrip ble https end problems desc mina
給定兩個整數,分別表示分數的分子和分母,返回字符串格式的小數。
如果小數部分為循環小數,則將重復部分括在括號內。
例如,
給出 分子 = 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 分數到小數