zoukankan      html  css  js  c++  java
  • leetcode[166]Fraction to Recurring Decimal

    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  to_str(long long  n)
    {
        string str="";
        if(n==0)
        {
            str+='0';
            return str;
        }
        long long tmp=n;
        long long power=1;
        int icount=0;
        while (tmp)
        {
            tmp/=10;
            power*=10;
            icount++;
        }
        power/=10;
        tmp=n;
        for (int i=0;i<icount;i++)
        {
            long long d=tmp/power;
            str+=char('0'+d);
            tmp-=d*power;
            power/=10;
        }
        return str;
    }
    string fractionToDecimal(int numerator, int denominator) {
        if(denominator==0)return "";
        if(numerator==0)return "0";
        string res="";
        long long num=numerator,  den=denominator;
        if((num>0&&den<0)||(num<0&&den>0))
            res+="-";
        num=num>=0?num:-num,den=den>=0?den:-den;
        long long part=num/den;
        res+=to_str(part);
        long long f=num%den;
        if(f==0)return res;
        res+='.';
        map<int,int> fmap;
        while(f)
        {
            if (fmap.count(f))
            {
                int beg=fmap[f];
                string part1=res.substr(0,beg);
                string part2=res.substr(beg,res.length());
                res=part1+"("+part2+")";
                return res;
            } 
            else
            {
                fmap[f]=res.length();            
                f*=10;
                res+=to_str(f/den);
                f%=den;        
            }
        }
        return res;
    }
    };
  • 相关阅读:
    Keepalived安装配置
    Playbook 角色(Roles) 和 Include 语句
    Ansible Playbook
    ansible的Ad-hoc命令
    Android线程简介
    宝岛探险,DFS&BFS
    再解炸弹人,dfs&bfs
    解救小哈——bfs广搜
    解救小哈——dfs深搜
    数的全排列
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4280677.html
Copyright © 2011-2022 走看看