(c语言韩信点兵代码)(韩信点兵c语言编程while)

(c语言韩信点兵代码)(韩信点兵c语言编程while)

相传,韩信才智过人,从不直接清点军队的人数,只要让士兵三人一排,五人一排,七人一排地变换队形,而每次他只扫一眼排位就知道总人数了.输入包含多组数据,每组数据包含3个非负整数a,b,c.表示每种队形的排位人数(a<3,b<5,c<7) 输出总人数的最小值(或者报告无解)

[已知] 10 <= 总人数 <= 100

[样例输入] 2 1 6 2 1 3

[样例输出] 2 1 6: 最少 41人 2 1 3: No answer

[分析] 我们应该判断出 a,b,c 的取值范围,即输入值的范围 a --> [0,1,2] b --> [0,1,2,3,4] c --> [0,1,2,3,4,5,6] 在寻找符合条件的abc组合时,貌似一眼看不出来有什么数学公式可以马上解决,但是我们可以用计算机暴力寻找,这叫穷举法.

[运行结果]

(c语言韩信点兵代码)(韩信点兵c语言编程while)

[代码] 使用for循环,分支,input(), print()格式化, 列表推导, 拆包赋值法, 和几个内建函数.

# 此程序没有做输入错误检查,请自行添加

def app():

abc = input("请连续输入3个整数,以空格分隔:")

abclist = [int(a) for a in abc.split()]

a,b,c=abclist

people = []

for i in range(10,101):

if i%3==a and i%5==b and i%7==c:

people.append(i)

if len(people)>0:

print("Case {}: 最少 {} 人".format(abc, min(people)) )

else:

print("Case {}: No answer".format(abc))

# 运行三次

for i in range(3):

app()

如果想查看a,b,c所有的组合情况,那么这个程序应该怎么升级呢?大家如果感兴趣请自行修改. [提示] 最简单的办法是对a,b,c的所有取值使用三重循环。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者酷叮猫少儿编程所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(c语言韩信点兵代码)(韩信点兵c语言编程while)
本文链接:https://www.51qsb.cn/article/m8ix9.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-01-09
下一篇2023-01-09

你可能还想知道

发表回复

登录后才能评论