Python練習-承壓計算
一、題目描述
本題為填空題,只需要算出結果后,在代碼中使用輸出語句將所填結果輸出即可。
X 星球的高科技實驗室中整齊地堆放著某批珍貴金屬原料。
每塊金屬原料的外形、尺寸完全一致,但重量不同。 金屬材料被嚴格地堆放成金字塔形。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 8? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7 8 8? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 2 7 2? ? ? ? ? ? ? ? ? ? ? ? ? ?8 1 4 9 1? ? ? ? ? ? ? ? ? ? ? ? ? 8 1 8 8 4 1? ? ? ? ? ? ? ? ? ? ? ? ?7 9 6 1 4 5 4? ? ? ? ? ? ? ? ? ? ? ? 5 6 5 5 6 9 5 6? ? ? ? ? ? ? ? ? ? ? ?5 5 4 7 9 3 5 5 1? ? ? ? ? ? ? ? ? ? ? 7 5 7 9 7 4 7 3 3 1? ? ? ? ? ? ? ? ? ? ?4 6 4 5 5 8 8 3 2 4 3? ? ? ? ? ? ? ? ? ? 1 1 3 3 1 6 6 5 5 4 4 2? ? ? ? ? ? ? ? ? ?9 9 9 2 1 9 1 9 2 9 5 7 9? ? ? ? ? ? ? ? ? 4 3 3 7 7 9 3 6 1 3 8 8 3 7? ? ? ? ? ? ? ? ?3 6 8 1 5 3 9 5 8 3 8 1 8 3 3? ? ? ? ? ? ? ? 8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9? ? ? ? ? ? ? ?8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4? ? ? ? ? ? ? 2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9? ? ? ? ? ? ?7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6? ? ? ? ? ? 9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3? ? ? ? ? ?5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9? ? ? ? ? 6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4? ? ? ? ?2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4? ? ? ? 7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6? ? ? ?1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3? ? ? 2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8? ? ?7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9? ? 7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6? ?5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1? X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X?
其中的數(shù)字代表金屬塊的重量(計量單位較大)。 最下一層的 XX 代表 3030 臺極高精度的電子秤。
假設每塊原料的重量都十分精確地平均落在下方的兩個金屬塊上, 最后,所有的金屬塊的重量都嚴格精確地平分落在最底層的電子秤上。
電子秤的計量單位很小,所以顯示的數(shù)字很大。
工作人員發(fā)現(xiàn),其中讀數(shù)最小的電子秤的示數(shù)為:20864582312086458231
請你推算出:讀數(shù)最大的電子秤的示數(shù)為多少?
運行限制:
- 最大運行時間:1s
- 最大運行內(nèi)存: 128M
二、解題思路
- 將金字塔以字符串形式放入源碼中
- 創(chuàng)建一個雙重列表,將所有的元素按列存儲在不同的列表中,然后所有的列表再分別作為一個元素存儲在一個大的列表中。
list =[[int(i) for i in j.split()] for j in a.split('\n')] - 分別遍歷每一個小列表中的每一個元素,將其下一列的元素的總重量依次算出:
list[i+1][j] += list[i][j]/2 list[i+1][j+1] += list[i][j]/2
遍歷結束后此時最后一行的元素便是各個的總重量,用min()和max()函數(shù)求出其值的大小。
num1 = min(list[-1]) num2 = max(list[-1])
最后轉化輸出得出結果(2086458231/num1)*num2,但是有除法在的結果肯定是會含有小數(shù)的,此時可以通過int來強制變?yōu)檎麛?shù),這樣比較簡單。也可以采用格式字符串的方法進行輸出,但是前提是需要將結果變?yōu)?code>float浮點數(shù)類型
三、源碼分享
# @File ? ?: 承壓計算.py
a=''' ? ? ? ? ? ? ? ? ? ? ? ?7?
? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 8?
? ? ? ? ? ? ? ? ? ? ? ? ? ?7 8 8?
? ? ? ? ? ? ? ? ? ? ? ? ? 9 2 7 2?
? ? ? ? ? ? ? ? ? ? ? ? ?8 1 4 9 1?
? ? ? ? ? ? ? ? ? ? ? ? 8 1 8 8 4 1?
? ? ? ? ? ? ? ? ? ? ? ?7 9 6 1 4 5 4?
? ? ? ? ? ? ? ? ? ? ? 5 6 5 5 6 9 5 6?
? ? ? ? ? ? ? ? ? ? ?5 5 4 7 9 3 5 5 1?
? ? ? ? ? ? ? ? ? ? 7 5 7 9 7 4 7 3 3 1?
? ? ? ? ? ? ? ? ? ?4 6 4 5 5 8 8 3 2 4 3?
? ? ? ? ? ? ? ? ? 1 1 3 3 1 6 6 5 5 4 4 2?
? ? ? ? ? ? ? ? ?9 9 9 2 1 9 1 9 2 9 5 7 9?
? ? ? ? ? ? ? ? 4 3 3 7 7 9 3 6 1 3 8 8 3 7?
? ? ? ? ? ? ? ?3 6 8 1 5 3 9 5 8 3 8 1 8 3 3?
? ? ? ? ? ? ? 8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9?
? ? ? ? ? ? ?8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4?
? ? ? ? ? ? 2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9?
? ? ? ? ? ?7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6?
? ? ? ? ? 9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3?
? ? ? ? ?5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9?
? ? ? ? 6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4?
? ? ? ?2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4?
? ? ? 7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6?
? ? ?1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3?
? ? 2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8?
? ?7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9?
? 7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6?
?5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1?
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '''
list =[[int(i) for i in j.split()] for j in a.split('\n')]
for i in range(len(list[-1])-1):
? ? for j in range(len(list[i])):
? ? ? ? list[i+1][j] += list[i][j]/2
? ? ? ? list[i+1][j+1] += list[i][j]/2
num1 = min(list[-1])
num2 = max(list[-1])
# print('%.0f'%float((2086458231/num1)*num2))
print(int((2086458231/num1)*num2))四、學習總結
- 1. 創(chuàng)建雙列表的方法:
list =[[int(i) for i in j.split()] for j in a.split('\n')] - 2.格式化字符串方法:
'%.0f'%float((2086458231/num1)*num2),要先轉化為浮點數(shù)類型。
到此這篇關于Python練習-承壓計算的文章就介紹到這了,更多相關Python承壓計算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)
這篇文章主要介紹了Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
修復python-memcached在python3.8環(huán)境中報SyntaxWarning的問題(完美解決)
我們一直使用python-memcached庫來操作memcached,最近發(fā)現(xiàn)在python3.8的環(huán)境中,代碼會報錯,下面通過本文給大家講解修復python-memcached在python3.8環(huán)境中報SyntaxWarning的問題及解決方法,需要的朋友可以參考下2022-08-08
Flask搭建虛擬環(huán)境并運行第一個flask程序
這篇文章主要介紹了Flask搭建虛擬環(huán)境并運行第一個flask程序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04

