百钱买百鸡B
类型:流程控制
描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何。
现在的问题是:用户输入鸡的数量和钱数,鸡翁、鸡母、鸡雏各为多少?如果有解,输出全部解,并按鸡翁数量由少到多的顺序输出;如果无解则输出“无解”。
输入格式
用户在同一行内输入用空格分隔的两个正整数,分别表示鸡的数量和钱数
输出格式
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出;
有多组解时,按鸡翁数量由少到多输出;
如果无解则输出“无解”。
示例 1
输入:
40 100
输出:
2 29 9
6 22 12
10 15 15
14 8 18
18 1 21
标准答案
# 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
# 现在的问题是:用户输入钱和鸡的总数,计算鸡翁、鸡母、鸡雏各为多少?如果有解,输出全部解,并按鸡翁数量由少到多的顺序输出;如果无解则输出“无解”。
num, money = map(int, (input().split()))
flag = 0
for x in range(1, money // 5 + 1):
for y in range(1, money // 3 + 1):
z = num - x - y # 鸡雏的数量等于总数减鸡翁和鸡母的数量
if z % 3 == 0 and z > 0 and 5 * x + 3 * y + z // 3 == money:
print(x, y, z)
flag = 1 # 如果找到满足的解那么flag从0变为1
# 如果找不到满足的解则输出无解
if flag == 0:
print('无解')
我的答案
num,money = map(int,input().split())
answer = []
for i in range(1,num):
for j in range(1,num):
for k in range(1,num):
if i+j+k == num and 5*i+3*j+k/3 == money:
answer.append(f'{i} {j} {k}')
if answer == []:
print('无解')
else:
for i in answer:
print(i)