• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            雁過無(wú)痕

            喝汽水問題

                                                              by flyinghearts

             

            1000瓶汽水,喝完后每3個(gè)空瓶能換1瓶汽水,問最后最多可以喝幾瓶汽水,此時(shí)剩余幾個(gè)空瓶?

             

             

            不妨假設(shè),共有n瓶汽水,每a個(gè)空瓶能換b瓶汽水(a > b)。剛開始有n瓶汽水,喝完后就有n個(gè)空瓶,多喝的汽水是靠空瓶換來的,每進(jìn)行一次空瓶換汽水,就能多喝b瓶汽水、空瓶數(shù)目就減少了a-b個(gè)a個(gè)空瓶換了b瓶汽水,喝完后得到b個(gè)空瓶)。

             

            (下面 [x] 表示x的整數(shù)部分)

            1 如果允許從別處(老板或其他顧客處)借空瓶(當(dāng)然,有借有還)

            空瓶換汽水次數(shù):   [n / (a - b)]

            最后剩余空瓶:     n % (a - b)

            總共可以喝到汽水: n + [n / (a - b)] * b

             

            2 不允許借空瓶

             空瓶換汽水過程中,一但空瓶數(shù)小于a,則停止交換。

             對(duì) n < a,顯然,空瓶換汽水次數(shù)為0,總共可以喝到汽水n瓶,最后剩余空瓶n個(gè)

             對(duì) n >= a:(下面提供三種解法)

              解法一    空瓶換汽水次數(shù)k等于滿足n – (a-b)*t < a的最小非負(fù)整數(shù)t:

                          t > (n-a)/(a-b),最小的t [(n-a)/(a-b)] + 1 = [(n-b)/(a-b)]

                          剩余的空瓶數(shù):n – (a-b)*t

            = n – (a-b)*([(n-b)/(a-b)])

                                       = b + (n-b) - (a-b)*([(n-b)/(a-b)])

            = b + (n-b)%(a-b)

             

            解法二   先預(yù)留a個(gè)空瓶,將剩余的n-a個(gè)空瓶進(jìn)行換汽水,換的過程中,若空瓶不夠a個(gè),則從預(yù)留的a個(gè)空瓶中“借”,因而,

            空瓶換汽水次數(shù):[(n-a)/(a-b)] + 1 = [(n-b)/(a-b)](預(yù)留的a個(gè)空瓶也能換一次)

            最后剩余空瓶: (n-b) % (a-b) + b(預(yù)留的a個(gè)空瓶換得b瓶汽水)

             

            解法三   最后一次空瓶換汽水得到的b瓶汽水,喝完后得到b個(gè)空瓶,因而最后剩余空瓶數(shù)必然大于b個(gè),先預(yù)留b個(gè)空瓶,將剩余的n-b個(gè)空瓶進(jìn)行換汽水,若空瓶不夠a個(gè),則從預(yù)留的b個(gè)空瓶中“借”(由于能進(jìn)行空瓶換汽水,空瓶數(shù)>= a – b,因而“借”完后,可以保證空瓶數(shù)大等于a),

                       空瓶換汽水次數(shù):[(n-b)/(a-b)],

            最終剩余空瓶數(shù):b + (n-b) % (a-b)

             

            (對(duì)解法三,n>=b時(shí)結(jié)論成立,對(duì)解法一、二,可以驗(yàn)證n >=b時(shí),結(jié)論也成立)

             

            因而,對(duì) n >= b

            空瓶換汽水次數(shù):   [(n-b)/(a-b)]

            最后剩余空瓶:     b + (n-b) % (a-b)

            總共可以喝到汽水: n + [(n-b)/(a-b)] * b

             

            對(duì)原題:

             n = 1000,a = 3, b = 1, a – b = 2

             若允許借空瓶    

            可以喝到汽水: 1000 + 1000 / 2 = 1500

            剩余空瓶:1000 % 2 = 0

             

            若不允許借空瓶

            可以喝到汽水: 1000 + (1000 - 1) / 2 = 1499,

            剩余空瓶:     1 + (1000 - 1) % 2 = 2

             

            posted on 2011-09-23 19:45 flyinghearts 閱讀(2920) 評(píng)論(7)  編輯 收藏 引用 所屬分類: 算法

            評(píng)論

            # re: 喝汽水問題 2011-09-23 20:16 cheap lace front wigs
            呵呵,這個(gè)算法相當(dāng)有意思,學(xué)習(xí)了  回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2011-09-23 20:19 飛舞的煙灰缸
            其實(shí)這個(gè)是小學(xué)三年級(jí)的奧賽題,我那時(shí)候就做過。不過現(xiàn)在重新做這個(gè)題目花的時(shí)間比小時(shí)候還多,唉。  回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2011-09-24 01:25 Archen
            我就是做了漫畫那家伙 我覺得你有點(diǎn)想的過于復(fù)雜。
            汽水兌換本質(zhì)上找汽水內(nèi)容和瓶子的兌換比
            由條件可以知道,一空瓶=b/(a-b)汽水
            能借的話等于兌換不設(shè)條件,所以n瓶汽水=n空瓶+n汽水=n*b/(a-b)汽水+n
            不能借的話起碼剩一個(gè)空瓶,那么n瓶汽水=(n-1)空瓶+n汽水=(n-1)*b/(a-b)+n,結(jié)果取整即可  回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2011-09-24 09:47 cheap lace front wigs
            @Archen 正解!
              回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2011-09-24 20:27 flyinghearts
            @Archen
            不能借的話,最后至少剩下b個(gè)空瓶,而不是1個(gè)。
            你可能沒注意到,你我得到的答案都不一樣。

            利用“飲料和空瓶的價(jià)值比”的計(jì)算結(jié)果,在b>1時(shí)可能不正確。

            比如說,5個(gè)空瓶可以換2瓶汽水,
            開始有5瓶水,則無(wú)論是否可以借瓶,最多只能喝7瓶汽水
            開始有6瓶水,不能借瓶的話,最多只能喝8瓶水。
              回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2012-05-21 16:49 啊啊啊
            把汽水分成空瓶子和飲料2個(gè)部分;
            1瓶汽水 = 1個(gè)空瓶子(空瓶子) + 1瓶子容量的汽水(飲料)

            因?yàn)椋?3瓶汽水 = 3空瓶子 + 3份飲料 = 1瓶汽水 + 3份飲料
            所以: 2瓶汽水 = 3份飲料 即 1瓶汽水 = 1.5份飲料
            現(xiàn)有1000瓶汽水,所以可以喝到的飲料是 1.5份飲料X1000瓶汽水 = 1500份飲料

            因?yàn)樽詈蟮贸龅氖钦麛?shù),所以不用再算了,如果不是整數(shù),則可以退一瓶。
              回復(fù)  更多評(píng)論
              

            # re: 喝汽水問題 2012-05-29 19:56 flyinghearts
            @啊啊啊

            又一個(gè)不認(rèn)真看帖就回帖的。

            先不說 “價(jià)值法”是不是正確的,你覺得“列一個(gè)方程再推出結(jié)果” 與 “不列方程直接得出結(jié)果” 哪一種方法更容易理解?

            再說下“價(jià)值法”,“價(jià)值法”要得出正確結(jié)果,就必須“耍點(diǎn)無(wú)賴”:

            1 必須能借到空瓶, 不然 3空瓶換1汽水時(shí),開始有2瓶汽水時(shí),得到的不是正確答案。

            2 若6空瓶能換2汽水,則要求 3空瓶一定能換到1汽水,不然在開始有2瓶汽水時(shí),計(jì)算得到的不是正確答案。(網(wǎng)上的題目,都是n空瓶能換1汽水,所以不存在這個(gè)問題)

            在實(shí)際兌換中,極有可能這兩個(gè)條件都不能滿足。










              回復(fù)  更多評(píng)論
              

            91久久精一区二区三区大全| 久久综合狠狠色综合伊人| 大香网伊人久久综合网2020| 久久这里的只有是精品23| 久久精品国产99久久无毒不卡| 国内精品久久久久久久coent| 99久久精品免费看国产一区二区三区 | 久久精品国产亚洲av麻豆蜜芽| 久久最近最新中文字幕大全 | 久久无码AV一区二区三区| 72种姿势欧美久久久久大黄蕉| 久久精品国产亚洲Aⅴ蜜臀色欲| 精品久久久久香蕉网| 性欧美大战久久久久久久久| 亚洲欧美国产日韩综合久久| 国产午夜精品久久久久九九| 99久久99久久精品国产片果冻| 久久久精品免费国产四虎| 99久久精品免费看国产一区二区三区| 久久久青草久久久青草| 久久久久se色偷偷亚洲精品av| 精品久久人人妻人人做精品| 亚洲AV无码久久精品成人 | 午夜精品久久久久久影视777| 国产精品成人久久久久三级午夜电影| 亚洲精品无码久久久久AV麻豆| 久久精品国产亚洲麻豆| 国产精品免费看久久久香蕉| 久久精品人妻中文系列| 久久午夜综合久久| 一本一本久久A久久综合精品| 久久青青国产| 久久综合色区| 中文字幕精品久久久久人妻| 久久成人18免费网站| 国产精品成人99久久久久91gav| 香蕉久久一区二区不卡无毒影院| 久久男人AV资源网站| 久久久久无码精品| 久久涩综合| 精品国产乱码久久久久久人妻|