【問題】西洋棋的棋盤有共有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最直觀的方式是模擬實際填充過程。遇到出界情況換下一行,填充方向改變。這樣做,需要儲存...