我被要求做以下几点: 如果有可能购买x,x + 1,...,x + 5套McNuggets,对于某些x,那么可以购买任意数量的McNuggets> = x,因为McNuggets有6,9和20个包装。写一个迭代程序,找到最大数量的无法准确购买的McNuggets。丢番图方程实现
这是我想出的代码,但它得到的停留在一个无限循环:
count = 0
n = 1
while count < 6:
six_consequtive = True
for a in range(n):
for b in range(n):
for c in range(n):
if 6*a + 9*b + 20*c == n:
six_consequtive = False
if six_consequtive:
count += 1
else:
count = 0
n += 1
print("Largest number of McNuggets that cannot be bought in exact quantity: %d." % (n - 5))
非常感谢您!
你能否解释“六连冠”测试的目的?你的家庭作业是否指出,一旦你发现连续一些财产的六个值,你可以认为你有答案?如果是这样,你能描述一下这个属性吗? – steveha
是的,正如我在问题中所说的那样,如果有可能购买x,x + 1,...,x + 5套McNuggets,对于某些x,则有可能购买任意数量的McNuggets> = x,因为McNuggets有6,9和20包。这是因为如果你找到6个连续集合,你总是可以无限增加6个集合。因此,x之前的集合是不能被购买的最大集合。 我希望我能正确理解你的问题。谢谢。 – geekkid