主要就是数学运算,高中及以上应该问题不大 。
R
1
∗
e
P
1
∗
i
×
R
2
∗
e
P
2
∗
i
=
(
R
1
∗
R
2
)
∗
e
(
P
1
+
P
2
)
i
R_1*e^{P_1*i}×R_2*e^{P_2*i}=(R_1*R_2)*e^{(P_1+P_2)i}
R1∗eP1∗i×R2∗eP2∗i=(R1∗R2)∗e(P1+P2)i
A
=
(
R
1
∗
R
2
)
∗
c
o
s
(
P
1
+
P
2
)
A=(R_1*R_2)*cos(P_1+P_2)
A=(R1∗R2)∗cos(P1+P2)
B
=
(
R
1
∗
R
2
)
∗
s
i
n
(
P
1
+
P
2
)
B=(R_1*R_2)*sin(P_1+P_2)
B=(R1∗R2)∗sin(P1+P2)
然后格式化输出A+Bi即可
这是一开始的情况
后来发现了问题,出在:我没有对+0.00和-0.00进行统一,按照题目测试点的要求,A的绝对值如果小于0.005,则输出0.00,B的绝对值如果小于0.005,则输出+0.00.
注意:printf自带四舍五入。
补充知识:%+d或者%+f可以带符号输出变量(代码变得更简洁了 )。
对特殊情况进行判断,就通过了。
#includeusing namespace std; int main(){ double a, b, c, d; scanf("%lf%lf%lf%lf", &a, &b, &c, &d); double A = a * c * cos(b + d), B = a * c * sin(b + d); if(fabs(A) < 0.005) printf("0.00"); else printf("%.2f", A); if(fabs(B) < 0.005) printf("+0.00i"); else printf("%+.2fi", B); return 0; }



