[問題] 請問關於迴圈的問題

作者: nanami (咪子)   2019-09-27 13:12:22
新手發問
題目是
薯條一份20元 漢堡一個40元 可樂一杯10元
輸入現有的金額 M 和欲購買的食物總和 S
輸出所有可能的組合
如果無法分配則輸出 "無法依條件分配"
以下是我目前打的:
N = 1000
S = 30
#===========================
#main
x = 0
while x <= S:
y = 0
while y <= S:
z = 0
while z <= S:
if (x + y + z == S) and (20 * x + 40 * y + 10 * z == N):
print("薯條 %d 份; 漢堡 %d 個; 可樂 %d 杯" % (x, y, z))
z = z + 1
y = y + 1
x = x +1
我想請問該如何加入無法分配的條件在此迴圈中呢?
我本來是加else:
print("無法依條件分配")
在print("薯條 %d 份; 漢堡 %d 個; 可樂 %d 杯" % (x, y, z))的下面一行
但就會變成一直迴圈無法依條件分配這行字
所以想請問我該怎麼改才對呢?
先謝謝各位
作者: robert09080 (Aspettarei)   2019-09-27 13:23:00
我的話會先把兩個方程式相減,變成二元一次,之後這樣一個迴圈就可以解決,然後第三個未知數也可以求出來無法分配用t=0,有找到一解t+=1
作者: bibo9901 (function(){})()   2019-09-27 13:34:00
你該學的是數學..
作者: handsomeLin (DoGLin)   2019-09-27 14:26:00
是我數學不好嗎?這不是三元一次嗎?怎麼變二元一次了哦沒事 總量固定確實可以用二元一次解 我道歉
作者: yummy8765 (tsuyoku)   2019-09-27 15:59:00
你是指不想出現好幾百行“無法分配“嗎最簡單的方法 可以令一個變數x=0 如果有符合條件讓x=1最後檢查x=0或x=1就好用boolean也可以
作者: sherees (ShaunTheSheep)   2019-09-27 18:11:00
else可以啊 只是大概會有26xx條無法依條件分配而已26xxx
作者: ttff (十八尖山下智久)   2019-09-27 20:51:00
如果你有記得加上z=z+1那程式不是一直迴圈 而是都有print
作者: gaexpa066454 (玄)   2019-09-27 21:28:00
看了一下判斷式 一開始一直出現無法分配很正常啊用elif加個條件 什麼情況算無法分配吧?
作者: s312580 (waiting)   2019-09-28 04:51:00
所有方法可以用土法煉鋼的方式寫成迴圈

Links booklink

Contact Us: admin [ a t ] ucptt.com