python3 題解(34 棋盤放麥子)

2021-09-28 21:08:20 字數 924 閱讀 8000

【問題】西洋棋的棋盤有共有64格。傳說國王為獎勵它的發明人,答應了他的乙個「小」要求。

在棋盤的第1格放1粒小麥,第2格放2粒,第3格放4粒,第4格放8粒…,每一格是前一格數目的2倍。

這一共是多少小麥呢?是個天文數字!

請你利用計算機計算,準確地說,到底是多少小麥。

分析:實際上就是求:

1 + 2 + 4 + 8 + …

一共湊齊64項就行。

注意,這個數字可能很大,

但,python可以自動處理大整數,因而程式十分簡單,實際上只有一行。

def

wheat

(n):

return

sum([2

** i for i in

range

(n)]

)if __name__ ==

'__main__'

:print

(wheat(64)

)

當然,在計算n次方的時候,不用每次都從頭開始,只要在前一次結果基礎上乘以2就可以了。

下面是用迭代器來完成這個想法。

def

wheat

(n):

deff

(n):

a =1for i in

range

(n):

yield a

a *=

2return

sum(

list

(f(n)))

if __name__ ==

'__main__'

:print

(wheat(64)

)

需要補基礎的,可以看:小甲魚pyhthon教程,bilibili站上還有:[耿老師]小甲魚python作業 解析系列,持續更新中。

棋盤覆蓋問題python3實現

在2 k 2 k個方格組成的棋盤中,有乙個方格被占用,用下圖的4種l型骨牌覆蓋所有棋盤上的其餘所有方格,不能重疊。如下 def chess tr,tc,pr,pc,size global mark global table mark 1 count mark if size 1 return hal...

棋盤覆蓋問題python3實現

在2 k 2 k個方格組成的棋盤中,有乙個方格被占用,用下圖的4種l型骨牌覆蓋全部棋盤上的其餘全部方格,不能重疊。例如以下 def chess tr,tc,pr,pc,size global mark global table mark 1 count mark if size 1 return h...

python3 題解(14)蛇形填充矩陣

問題 用 1 n 2n 2 n2的數字蛇形填充 n 階矩陣。當 n 5 的時候,如下 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25最直觀的方式是模擬實際填充過程。遇到出界情況換下一行,填充方向改變。這樣做,需要儲存...