[問題] 買麥克雞塊的問題

看板Python作者 (Cosmajoonitist)時間14年前 (2011/11/15 03:22), 編輯推噓2(2017)
留言19則, 7人參與, 最新討論串1/2 (看更多)
不好意思又來請教板上前輩... 問題是這樣: 麥克雞塊有 6 塊裝, 9 塊裝跟 20 塊裝。我們如果要找出哪些塊數的雞塊是不能直接 買到的(比如說 5 塊雞塊得買 6 塊雞塊, 然後丟掉一塊, 這樣就不行), 要怎麼找? 最大塊數是多少塊? 我的 code 如下: #program that finds the largest number of McNuggets that cannot be bought #in exact quantity. a = 0 b = 0 c = 0 n = 1 #number of nuggets #sol = (a, b, c) while (n <50): while (c <= n/20): while (b <= n/9): while (a <= n/6): if (6*a + 9*b + 20*c != n): a += 1 else: n += 1 a = 0 b += 1 a = 0 c += 1 b = 0 c = 0 print n n += 1 print 'Done!' n 設定 50 是因為我知道 50 以後不管多少雞塊都可以湊到 code 讓湊不到的都跑出來是因為這樣比較簡單...而我這步都還不會所以先這樣寫...>_< 我的寫法跟前面跑質數寫法基本上一樣(真沒想像力對不起 Orz) 但是不知道為什麼按下 F5 之後什麼都跑不出來... 還請板上前輩賜教, 感謝! -- e^(iπ) + 1 = 0 - Leonhard Euler -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.113.148.21

11/15 04:09, , 1F
因為a=0, 永遠都讓while(a<=n/6)成立, 所以永遠都不會結束
11/15 04:09, 1F

11/15 04:16, , 2F
我猜是39
11/15 04:16, 2F

11/15 05:44, , 3F
你c+=1 然後又c=0 ... 難怪會無窮回圈
11/15 05:44, 3F

11/15 05:45, , 4F
建議對於"已知迴圈數"的用 for,未知次數的才用 while
11/15 05:45, 4F

11/15 05:47, , 5F
而且這種問題個人會建議用 Dynamic Programming 解。
11/15 05:47, 5F

11/15 05:48, , 6F
而且答案應該是 43 不是 39 啦 XD
11/15 05:48, 6F

11/15 05:56, , 7F
看到的第1眼用猜的 猜錯不用錢XD
11/15 05:56, 7F

11/15 13:11, , 8F
我是用之前的 code 改的沒發現, 太感謝了!
11/15 13:11, 8F

11/15 13:12, , 9F
不用 for 是因為其實次數是未知, 只是剛好因為上一題
11/15 13:12, 9F

11/15 13:12, , 10F
所以我才知道次數, 算是偷吃步, 等這部份修正之後要改
11/15 13:12, 10F

11/15 13:12, , 11F
回來...用未知的算法...
11/15 13:12, 11F

11/15 14:32, , 12F
我比較喜歡一般的雞塊
11/15 14:32, 12F

11/15 14:40, , 13F
我比較想知道怎麼知道50後就沒了的想法@_@a
11/15 14:40, 13F

11/15 16:55, , 14F
可以用歸納法證明,只要有連續 6 個可以組出的整數,
11/15 16:55, 14F

11/15 16:56, , 15F
之後的所有整數都可以被組出來。
11/15 16:56, 15F

11/15 16:59, , 16F
我比較想知道一般的雞塊跟麥克雞塊差別在哪? XDDDDD
11/15 16:59, 16F

11/15 17:51, , 17F
麥克雞塊應該是用肉漿去做出來的吧 = =
11/15 17:51, 17F

11/22 02:00, , 18F
看到這問題就讓我想起當初學演算法的時光...
11/22 02:00, 18F

11/22 02:01, , 19F
不過那時候要解的好像是背包問題, 比這個麻煩XD
11/22 02:01, 19F
文章代碼(AID): #1EmMgIp6 (Python)
文章代碼(AID): #1EmMgIp6 (Python)