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)".
class Solution
{
public:
string fractionToDecimal(int numerator, int denominator)
{
if(numerator==0)
return "0";
long num1=fabs(numerator);
long num2=fabs(denominator);
int flag=(numerator>0^denominator>0)?1:0;
string ans=flag?"-":"";
ans+=to_string(num1/num2);
if(num1%num2==0)
return ans;
unordered_map<int ,int>hash;
num1=num1%num2;
ans+=".";
while(!hash.count(num1))
{
hash[num1]=ans.size();
num1*=10;
ans+=to_string(num1/num2);
if(num1%num2==0)
return ans;
num1=num1%num2;
}
int len=ans.size();
ans.insert(hash[num1], 1, '(');
ans += ')';
return ans;
}
};