1051 複數乘法 (15分)
複數可以寫成 (a+bi) 的常規形式,其中 a 是實部,b 是虛部,i 是虛數單位,滿足 i2 =−1;也可以寫成極座標下的指數形式 (r×e(pi) ),其中 r 是複數模,p 是輻角,i 是虛數單位,其等價於三角形式 r(cos§+isin§)。
現給定兩個複數的 r 和 p,要求輸出兩數乘積的常規形式。
輸入格式:
輸入在一行中依次給出兩個複數的 r1 , p1 , r2 , p2 ,數字間以空格分隔。
輸出格式:
在一行中按照 a+bi 的格式輸出兩數乘積的常規形式,實部和虛部均保留 2 位小數。注意:如果 b 是負數,則應該寫成 a-|b|i 的形式。
輸入樣例:
2.3 3.5 5.2 0.4
輸出樣例:
-8.68-8.23i
version1:
注意輸出格式,如果虛部是正數要新增負號~
但還是有兩個測試點錯誤……
import math
r1, p1, r2, p2 =
map(
float
,input()
.split())
a1 = r1 * math.cos(p1)
b1 = r1 * math.sin(p1)
a2 = r2 * math.cos(p2)
b2 = r2 * math.sin(p2)
result =
complex
(a1, b1)
*complex
(a2, b2)
if result.imag >0:
print
('%.2f+%.2fi'
%(result.real, result.imag)
)else
:print
('%.2f%.2fi'
%(result.real, result.imag)
)
錯誤分析:
格式輸出直接粗暴判斷正負,沒有考慮邊界如果進製的符號變化情況。
例如,如果虛部為-0.006j,那麼進製後就是+0.01j
>>
> result =(-
0.007
-0.006j
)>>
>
if result.imag >=0:
print
('%.2f+%.2fi'
%(result.real, result.imag)
)else
:print
('%.2f%.2fi'
%(result.real, result.imag))-
0.01
-0.01i
實部、虛部符號均錯誤?
version2:
ac**
像上述這種情況應當單獨判斷~
import math
from decimal import decimal
r1, p1, r2, p2 =
map(
float
,input()
.split())
a1 = r1 * math.cos(p1)
b1 = r1 * math.sin(p1)
a2 = r2 * math.cos(p2)
b2 = r2 * math.sin(p2)
result =
complex
(a1, b1)
*complex
(a2, b2)
if result.real <
0and result.real +
0.005
>=0:
a ='0.00'
else
: a =
'%.2f'
%(result.real)
if result.imag <
0and result.imag +
0.005
>=0:
b ='+0.00i'
elif result.imag >=0:
b ='+%.2fi'
%(result.imag)
else
: b =
'%.2fi'
%(result.imag)
print
(a+b)
B1051 複數乘法
1051 複數乘法 15 分 複數可以寫成 a bi 的常規形式,其中 a 是實部,b 是虛部,i 是虛數單位,滿足 i2 1 也可以寫成極座標下的指數形式 r e pi 其中 r 是複數模,p 是輻角,i 是虛數單位,其等價於三角形式 r cos isin 現給定兩個複數的 r 和 p,要求輸出兩...
B1051 複數乘法 15
複數可以寫成 a bi 的常規形式,其中a是實部,b是虛部,i是虛數單位,滿足i2 1 也可以寫成極座標下的指數形式 r e pi 其中r是複數模,p是輻角,i是虛數單位,其等價於三角形式 r cos p isin p 現給定兩個複數的r和p,要求輸出兩數乘積的常規形式。輸入格式 輸入在一行中依次給...
B1051 複數乘法 15 分
複數可以寫成 a bi 的常規形式,其中 a 是實部,b 是虛部,i 是虛數單位,滿足 i 2 1 也可以寫成極座標下的指數形式 r e pi 其中 r 是複數模,p 是輻角,i 是虛數單位,其等價於三角形式 r cos isin 現給定兩個複數的 r 和 p,要求輸出兩數乘積的常規形式。輸入格式 ...