韩信点兵python源代码_少儿编程|Python小课堂 – 韩信点兵
相傳,韓信才智過人,從不直接清點(diǎn)軍隊(duì)的人數(shù),只要讓士兵三人一排,五人一排,七人一排地變換隊(duì)形,而每次他只掃一眼排位就知道總?cè)藬?shù)了.輸入包含多組數(shù)據(jù),每組數(shù)據(jù)包含3個(gè)非負(fù)整數(shù)a,b,c.表示每種隊(duì)形的排位人數(shù)(a<3,b<5,c<7) 輸出總?cè)藬?shù)的最小值(或者報(bào)告無解)
[已知] 10 <= 總?cè)藬?shù) <= 100
[樣例輸入] 2 1 6 2 1 3
[樣例輸出] 2 1 6: 最少 41人 2 1 3: No answer
[分析] 我們應(yīng)該判斷出 a,b,c 的取值范圍,即輸入值的范圍 a –> [0,1,2] b –> [0,1,2,3,4] c –> [0,1,2,3,4,5,6] 在尋找符合條件的abc組合時(shí),貌似一眼看不出來有什么數(shù)學(xué)公式可以馬上解決,但是我們可以用計(jì)算機(jī)暴力尋找,這叫窮舉法.
[運(yùn)行結(jié)果]
[代碼] 使用for循環(huán),分支,input(), print()格式化, 列表推導(dǎo), 拆包賦值法, 和幾個(gè)內(nèi)建函數(shù).
# 此程序沒有做輸入錯(cuò)誤檢查,請(qǐng)自行添加
def app():
abc = input(“請(qǐng)連續(xù)輸入3個(gè)整數(shù),以空格分隔:”)
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))
# 運(yùn)行三次
for i in range(3):
app()
如果想查看a,b,c所有的組合情況,那么這個(gè)程序應(yīng)該怎么升級(jí)呢?大家如果感興趣請(qǐng)自行修改. [提示] 最簡(jiǎn)單的辦法是對(duì)a,b,c的所有取值使用三重循環(huán)。
總結(jié)
以上是生活随笔為你收集整理的韩信点兵python源代码_少儿编程|Python小课堂 – 韩信点兵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么钢枪_这样玩《和平精英》有手就能上皇
- 下一篇: 火狐浏览器 xml 解析错误:文档元素后