題意描述:
在數學中,矩陣的「譜半徑」是指其特徵值的模集合的上確界。換言之,對於給定的 n 個複數空間的特徵值 ,它們的模為實部與虛部的平方和的開方,而「譜半徑」就是最大模。
現在給定一些複數空間的特徵值,請你計算並輸出這些特徵值的譜半徑。
輸入格式:
輸入第一行給出正整數 n(≤ 10 000)是輸入的特徵值的個數。隨後 n 行,每行給出 1 個特徵值的實部和虛部,其間以空格分隔。注意:題目保證實部和虛部均為絕對值不超過 1000 的整數。
輸出格式:
在一行中輸出譜半徑,四捨五入保留小數點後 2 位。
輸入樣例:
5
0 12 0
-1 0
3 30 -3
輸出樣例:
4.24
解題思路:mara: 看起來很簡單的樣子,不知道四捨五入那塊用python會不會不好寫。
jack:em…,是很簡單,求乙個最大值,然後開方四捨五入保留兩位小數就好了。
mara: 我先用format( ) 試一下,出題人應該不會特別考慮到python中format()和round()遇5不准的問題,說不定一下就過了。
jack: 怎麼樣 ?
mara: 過了過了,○( ^皿^)っhiahiahia…
**:
mara』s version:
def
main()
: n =
int(
input()
)# 接收輸入的正整數n
max_radius =-1
# 用來記錄最大譜半徑的平方
for x in
range
(n):
a, b =
(int
(y)for y in
input()
.split())
# 一次讀入每個特徵值的實部和虛部
if a * a + b * b > max_radius:
max_radius = a * a + b * b
# 更新最大譜半徑的平方
print(""
.format
(max_radius **
0.5)
)# 輸出最大譜半徑, max_radius ** 0.5 即開根號。 "".format()即四捨五
# 入保留小數點後兩位。 但是 python 的 round 和 format 在四捨五入碰到要保留
# 的位數後面一位是5的時候,不準確。巧的嘞,這道題目中居然沒有類似的測試點。
if __name__ ==
'__main__'
: main(
)
jack』s version:
def
main()
: n =
int(
input()
) max_radius =-1
for x in
range
(n):
a, b =
(int
(y)for y in
input()
.split())
if a * a + b * b > max_radius:
max_radius = a * a + b * b
max_radius =
int(max_radius **
0.5*
100+
0.5)
/100.0
# 四捨五入保留兩位小數
print(""
.format
(max_radius)
)#注意這裡還需要format處理max_radius == 0 的情況。
if __name__ ==
'__main__'
: main(
)
易錯點:總結:float
1063 計算譜半徑 (20 分)
1063 計算譜半徑 20 分 在數學中,矩陣的 譜半徑 是指其特徵值的模集合的上確界。換言之,對於給定的 n 個複數空間的特徵值 它們的模為實部與虛部的平方和的開方,而 譜半徑 就是最大模。現在給定一些複數空間的特徵值,請你計算並輸出這些特徵值的譜半徑。輸入第一行給出正整數 n 10 000 是輸...
1063 計算譜半徑 20 分
在數學中,矩陣的 譜半徑 是指其特徵值的模集合的上確界。換言之,對於給定的 n 個複數空間的特徵值 它們的模為實部與虛部的平方和的開方,而 譜半徑 就是最大模。現在給定一些複數空間的特徵值,請你計算並輸出這些特徵值的譜半徑。輸入格式 輸入第一行給出正整數 n 10 000 是輸入的特徵值的個數。隨後...
1063 計算譜半徑 20 分
在數學中,矩陣的 譜半徑 是指其特徵值的模集合的上確界。換言之,對於給定的 n 個複數空間的特徵值 它們的模為實部與虛部的平方和的開方,而 譜半徑 就是最大模。現在給定一些複數空間的特徵值,請你計算並輸出這些特徵值的譜半徑。輸入格式 輸入第一行給出正整數 n 10 000 是輸入的特徵值的個數。隨後...