题解 | #百钱买百鸡问题#
百钱买百鸡问题
http://www.nowcoder.com/practice/74c493f094304ea2bda37d0dc40dc85b
本题的方案可以说是非常多:
直接打印
看了一圈下来,怎么没看到直接打印的大哥。我来当带头大哥,直接打印:
while True:
try:
input()
except:
break
res = """0 25 75
4 18 78
8 11 81
12 4 84
"""
print(res)
暴力循环
这个就也很直接,就三层for循环
while True:
try:
input()
except:
break
for x in range(100):
for y in range(100):
for z in range(100):
if 100 == x + y + z and 300 == 15*x + 9*y + z:
print(x, y, z)
一层循环
根据三层for循环的代码中的两个方程,只需要将其中一个未知量变为已知量,即可将这个不完整的三元一次方程组,转为完整的二元一次方程组,就可以使用一层for循环来解决。
while True:
try:
input()
except:
break
for x in range(20):
yushu = (100 - 7 * x) % 4
if yushu == 0:
y = (100 - 7 * x) // 4
z = 100 - x - y
if z >= 0 and y >= 0:
print(x,y,z)
丢番图方程
实际上,本题所得到的方程中的未知数,都必须是正整数。而丢番图方程就是让方程的求解仅仅在整数范围内进行。本题需要正整数解,是丢番图方程的子集。 扩展部分:
- 费马大定理
- 希尔伯特第十问题