PAT 乙级 1051.复数乘法 C++/Java

题目来源

复数可以写成 ( 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 1;也可以写成极坐标下的指数形式 (,其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (。

现给定两个复数的 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

 

C++实现:

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 //1051:复数乘法 
 5 int main() {
 6     double r1, p1, r2, p2, res, resi;
 7     cin >> r1 >> p1 >> r2 >> p2;
 8     res = r1 * r2 * (cos(p1) * cos(p2) - sin(p1) * sin(p2));
 9     resi = r1 * r2 * (cos(p1) * sin(p2) + cos(p2) * sin(p1));
10     res = abs(res) < 0.01 ? 0 : res;
11     resi = abs(resi) < 0.01 ? 0 : resi;
12     char c = resi < 0 ? '-' : '+';
13     printf("%.2lf%c%.2lfi", res, c, abs(resi));
14     return 0;
15 }

 

Java实现:

 

posted @ 2021-04-16 14:46  47的菠萝~  阅读(49)  评论(0编辑  收藏  举报