↓ Skip to main content
  1. Science/
  2. Computer/

0166.Fraction to Recurring Decimal

Solution

class Solution:
    def fractionToDecimal(self, numerator: int, denominator: int) -> str:
        if numerator == 0:
            return "0"
        ans = []
        neg = (numerator > 0) ^ (denominator > 0)
        if neg:
            ans.append("-")
        a, b = abs(numerator), abs(denominator)
        ans.append(str(a // b))
        a %= b
        if a == 0:
            return "".join(ans)
        ans.append(".")
        d = {}
        while a:
            d[a] = len(ans)
            a *= 10
            ans.append(str(a // b))
            a %= b
            if a in d:
                ans.insert(d[a], "(")
                ans.append(")")
                break
        return "".join(ans)

if __name__ == "__main__":
    sol = Solution()
    print(sol.fractionToDecimal(1,2))
    print(sol.fractionToDecimal(2,1))
    print(sol.fractionToDecimal(4,333))