跳至主要内容

166. 分数到小数

class Solution {
public:
   
    string itoa(long long i)
    {
        char buff[100];
        sprintf(buff, "%lld", i);
        return buff;
    }

    string fractionToDecimal(int num, int den) {

        long long numerator = num;
        long long denominator = den;

        int neg = 1;
        if (numerator > 0 && denominator < 0)
        {
            neg = -1;
        }
        if (numerator < 0 && denominator > 0)
        {
            neg = -1;
        }
        numerator = abs(numerator);
        denominator = abs(denominator);

        long long a = numerator / denominator;
        if (numerator == a * denominator)
        {
            return (neg<0?"-":"")+itoa(a);
        }
        string ret = (neg<0?"-":"")+itoa(a);
        ret += ".";
        long long left = numerator - a * denominator;

        vector<pair<int, int>> c;
        int loop = -1;
        while (left != 0)
        {
            left *= 10;
            a = left / denominator;
            for (int i = 0; i < c.size(); i++)
            {
                if (c[i].first == a && c[i].second == left)
                {
                    loop = i;
                    break;
                }
            }

            if (loop != -1)
            {
                break;
            }

            if (left < denominator)
            {
                c.push_back(make_pair(a,left));
                continue;
            }
            c.push_back(make_pair(a, left));
            left = left - a * denominator;
            if (left == a * denominator)
            {
                break;
            }
        }

        for (int i = 0; i < c.size(); i++)
        {
            if (loop == i)
            {
                ret += "(";
            }
            ret += itoa(c[i].first);
        }

        if (loop != -1)
        {
            ret += ")";
        }

        return ret;
    }

};

评论

此博客中的热门博文

老毛子路由器无线桥接问题

  信道带宽:改成20M  关闭 DHCP 服务器  关闭动态 (DHCP) 路由 修改IP地址从192.168.123.1到192.168.1.114  无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择LAN bridge 连上上级wifi done 路由器自身可能上不去网,执行: route add default  gw 192.168.1.1 不过这种方式无法翻墙 ////////////////////////////////////////////////////////////// 第二种方式 不改信道不关闭DHCP,保持网段是192.168.123.1 无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择WAN 连上上级wifi done 路由器可以翻墙,但是192.168.1.1的机器访问不了192.168.123.1的机器 解决方法: 在192.168.123.1的机器把想要访问的机器比如192.168.123.100设置DMZ主机,这样就可以访问了,在 192.168.1.1能看到分配的ip比如192.168.1.115