【发布时间】:2018-12-31 08:31:12
【问题描述】:
如果只有 160 张钞票,我试图找出 1760 美元中有多少张 10 美元和 50 美元的钞票。在朋友的帮助下,我认为使用嵌套的 for 循环是最好的方法,但我在实现方面遇到了问题。我的想法是逐个迭代每个 x 直到 160,如果等式 != 1760,我将 y 增加 1 并重新开始。
这些是等式:
10x + 50y = 1760,
x + y = 160
我想要的输出是:10(156) + 50(4) = 1760。但到目前为止,我得到的只是:
10(1) + 50(0) = 10
10(2) + 50(1) = 70
10(3) + 50(2) = 130
10(4) + 50(3) = 190
10(5) + 50(4) = 250
...
...
...
10(156) + 50(30) = 3060
10(157) + 50(30) = 3070
10(158) + 50(30) = 3080
10(159) + 50(30) = 3090
10(160) + 50(30) = 3100
由于某种原因,当 x = 31 时,y 开始停留在 30。我不知道为什么。无论如何,这是我的代码:
for i in range(1, 161):
print("10" + "(" + str(i) + ") + 50" + "(" + str(y) + ")" + " = " + str((10*i)+(50*y)))
if ((10*i)+(50*y) < 1760):
y += 1
我不想要确切的答案。我只是想知道我哪里出错了。
【问题讨论】:
-
一旦达到 1760,y 将永远不会递增,因为 ((10*i)+(50*y)
-
@JónásBalázs 这发生在
y=30解释为什么 y 被“卡”在那里......