1063 計算譜半徑 20 分

2021-09-24 02:37:00 字數 2238 閱讀 4825

題意描述:

在數學中,矩陣的「譜半徑」是指其特徵值的模集合的上確界。換言之,對於給定的 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 是輸入的特徵值的個數。隨後...