1051 复数乘法 (15 分)

题目:

1051 复数乘法 (15 分)


思路:

  • 调用math函数库即可计算。另外需要注意若实部和虚部小于0.005且为负数时保留两位小数得到的是-0.00,直接上会wrong answer,所以需要将保留两位小数得到的结果为0的数去符号。

代码:

 1 #include <iostream>
 2 #include <cmath> 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     double r1, r2, p1, p2;
 8     cin >> r1 >> p1 >> r2 >> p2;
 9     double fact1 = r1 * r2 * ( cos(p1) * cos(p2) - sin(p1) * sin(p2) );
10     double fact2 = r1 * r2 * ( cos(p1) * sin(p2) + sin(p1) * cos(p2) );
11     if(fabs(fact1) < 0.005) 
12     {
13         fact1 = 0;
14     }
15     if(fabs(fact2) < 0.005) 
16     {
17         fact2 = 0;
18     }
19     if(fact2 < 0)
20         printf("%.2lf%.2lfi\n",fact1, fact2);
21     else
22         printf("%.2lf+%.2lfi\n",fact1, fact2);
23     return 0;
24 }

 总结:

  • 要考虑0的符号。

 

上一篇:PAT 甲级 1051 Pop Sequence


下一篇:[poj1113][Wall] (水平序+graham算法 求凸包)