复数乘法
题目描述
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 $i^2$=−1;也可以写成极坐标下的指数形式 (R×e(Pi)),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (R(cos(P)+i×sin(P))。
现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。
输入格式
输入在一行中依次给出两个复数的 R1, P1, R2, P2,数字间以空格分隔。
输出格式
在一行中按照 A+Bi
的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果 B
是负数,则应该写成 A-|B|i
的形式。
输入样例
1 | 2.3 3.5 5.2 0.4 |
输出样例
1 | -8.68-8.23i |
问题解决
解题思想
对于两个指数形式的复数R1×e(P1i)与R2×e(P2i),它们的乘积为R1×R2×e((P1+P2)i),设R3=R1×R2,P3=P1+P2,即为R3×e(P3i),它对应的三角形式为:(R3(cos(P3)+i×sin(P3)),设其对应的常规形式A+Bi,A=R3×cos(P3),B=R3×sin(P3),即:
1 | A = (R1×R2)×cos(P1+P2) |
这个过程在纸上演算一边就很清楚了。
此题的难点在于输出的控制,对A而言,绝对值小于0.005的都输出0.00
,对B而言,绝对值小于0.005的都输出+0.00
。其余的A正常输出就行,其余的B,大于0的需要输出+
,其余正常输出就行。
坑点提醒
最后两个测试点分别测试B和A的绝对值小于0.005的情况。
代码示例(C/C++)
1 |
|
题目来源:PAT乙级1051
作者:CHEN, Yue
单位:浙江大学