最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)LeetCode(166.分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù))

 更新時(shí)間:2021年07月31日 16:41:11   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(166.分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù))

[LeetCode] 166.Fraction to Recurring Decimal 分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù)

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)".

Credits:
Special thanks to @Shangrila for adding this problem and creating all test cases.

這道題還是比較有意思的,開始還擔(dān)心萬一結(jié)果是無限不循環(huán)小數(shù)怎么辦,百度之后才發(fā)現(xiàn)原來可以寫成分?jǐn)?shù)的都是有理數(shù),而有理數(shù)要么是有限的,要么是無限循環(huán)小數(shù),無限不循環(huán)的叫無理數(shù),例如圓周率pi或自然數(shù)e等,小學(xué)數(shù)學(xué)沒學(xué)好,汗!由于還存在正負(fù)情況,處理方式是按正數(shù)處理,符號最后在判斷,那么我們需要把除數(shù)和被除數(shù)取絕對值,那么問題就來了:由于整型數(shù)INT的取值范圍是-2147483648~2147483647,而對-2147483648取絕對值就會超出范圍,所以我們需要先轉(zhuǎn)為long long型再取絕對值。那么怎么樣找循環(huán)呢,肯定是再得到一個數(shù)字后要看看之前有沒有出現(xiàn)這個數(shù)。為了節(jié)省搜索時(shí)間,我們采用哈希表來存數(shù)每個小數(shù)位上的數(shù)字。還有一個小技巧,由于我們要算出小數(shù)每一位,采取的方法是每次把余數(shù)乘10,再除以除數(shù),得到的商即為小數(shù)的下一位數(shù)字。等到新算出來的數(shù)字在之前出現(xiàn)過,則在循環(huán)開始出加左括號,結(jié)束處加右括號。代碼如下:

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;
    }
};

相關(guān)文章

  • C實(shí)現(xiàn)分子沉積模擬的示例代碼

    C實(shí)現(xiàn)分子沉積模擬的示例代碼

    這篇文章主要介紹了計(jì)算機(jī)在材料科學(xué)中的一個練習(xí)題,功能是模擬氣化后分子沉積
    2013-11-11
  • C++入門之實(shí)現(xiàn)十步萬度游戲

    C++入門之實(shí)現(xiàn)十步萬度游戲

    這篇文章主要介紹了C++入門實(shí)現(xiàn)十步萬度游戲,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 關(guān)于大小端、位域的一些概念詳解

    關(guān)于大小端、位域的一些概念詳解

    我們常用的x86結(jié)構(gòu)都是小端模式,而大部分DSP,ARM也是小端模式,不過有些ARM是可以選擇大小端模式。所以對于上面的maxHeight是應(yīng)該以小端模式來存放,具體情況請看下面兩表
    2013-10-10
  • C++ 組合 (Composition)的介紹與實(shí)例

    C++ 組合 (Composition)的介紹與實(shí)例

    這篇文章主要給大家介紹了關(guān)于C++ 組合(Composition)的相關(guān)資料,組合就是將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶對單個對象和組合對象的使用具有一致性。需要的朋友可以參考下
    2021-05-05
  • C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼

    C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼

    本文介紹了一個在C++中保存不定長二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個結(jié)構(gòu)中,我們使用了一個含有指針和數(shù)組長度的結(jié)構(gòu)體,用這樣的一個結(jié)構(gòu)體構(gòu)造一個結(jié)構(gòu)體數(shù)組,用于存儲每一個不定長的數(shù)組,感興趣的朋友一起看看吧
    2024-03-03
  • 可能是你看過最全的十大排序算法詳解(完整版代碼)

    可能是你看過最全的十大排序算法詳解(完整版代碼)

    排序算法是程序中常用的算法,下面這篇文章主要給大家介紹了關(guān)于十大排序算法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C++實(shí)現(xiàn)并查集

    C++實(shí)現(xiàn)并查集

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)并查集,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 詳解c++中的類型識別

    詳解c++中的類型識別

    這篇文章主要介紹了 詳解c++中的類型識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • kernel劫持modprobe?path內(nèi)容詳解

    kernel劫持modprobe?path內(nèi)容詳解

    這篇文章主要為大家介紹了kernel劫持modprobe?path的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 用C語言實(shí)現(xiàn)鏈?zhǔn)綏=榻B

    用C語言實(shí)現(xiàn)鏈?zhǔn)綏=榻B

    大家好,本篇文章主要講的是用C語言實(shí)現(xiàn)鏈?zhǔn)綏=榻B,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

农安县| 巴南区| 甘泉县| 新乡县| 磐石市| 枣庄市| 云浮市| 吴堡县| 唐海县| 循化| 桦甸市| 唐河县| 绥宁县| 宜宾县| 新龙县| 河源市| 美姑县| 怀集县| 通许县| 固阳县| 城口县| 辽阳市| 丁青县| 平潭县| 阿尔山市| 东海县| 剑阁县| 正定县| 宜城市| 墨竹工卡县| 灵寿县| 和龙市| 虎林市| 都昌县| 左贡县| 游戏| 龙门县| 林周县| 库伦旗| 翁牛特旗| 甘孜县|