1051 复数乘法

复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​2​​=−1;也可以写成极坐标下的指数形式 (R×e​(Pi)​​),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (R(cos(P)+isin(P))。

现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。

输入格式:

输入在一行中依次给出两个复数的 R​1​​, P​1​​, R​2​​, P​2​​,数字间以空格分隔。

输出格式:

在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果 B 是负数,则应该写成 A-|B|i 的形式。

输入样例:

2.3 3.5 5.2 0.4

输出样例:

-8.68-8.23i
  
  题解:这道题目作为一个15份题目来说,拿满分是有点不容易的(有坑),刚开始我很想当然的按照正常思路,上去直接做,发现怎么都有几个测试点过不去。后来发现如果实部(或虚部)是-0.0025的话,直接保留两位小数输出是-0.00,显然不对,这时候就需要写一下特殊情况了。 代码如下:
 #include<iostream>
#include<math.h>
using namespace std; int main()
{
double p1, p2, r1, r2, a1, a2, b1, b2, a3, b3;
scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
a1 = r1*cos(p1);
b1 = r1*sin(p1);
a2 = r2*cos(p2);
b2 = r2*sin(p2);
a3 = a1*a2-b1*b2;
b3 = a1*b2+a2*b1;
if (a3 + 0.005 >= && a3 < )
printf("0.00");
else
printf("%.2lf", a3);
if(b3 >= )
printf("+%.2lfi",b3);
else if( b3 + 0.005 >= && b3 < )
printf("+0.00i");
else
printf("%.2lfi",b3);
return ;
}

最新文章

  1. Java实现中文数字转换为阿拉伯数字
  2. 图-最短路径-Dijktra(迪杰斯特拉)算法
  3. Oracle创建定时器
  4. Unity 物理引擎动力学关节
  5. chrome密码管理
  6. System.out.println()输出到指定文件里
  7. Android NDK 构建 以及一些错误
  8. 【ExtJs】使用Cookie、切换主题和语言
  9. win7如何建立无线局域网
  10. crystal report format number
  11. 使用solrj进行DIH操作
  12. 在ASP.NET MVC中对手机号码的验证
  13. stagefright框架(四)-Video Buffer传输流程
  14. HDU Today(dijskra)
  15. SharePoint采用BCS开发第一个应用程序(两)
  16. 基于CSS UI开源框架汇总
  17. AndroidStudio下gradle的入门介绍与使用
  18. yum 安装fuser命令
  19. 关于malloc(0)的返回值问题--这两天的总结与实践篇
  20. Jigloo 下载 安装 GUI

热门文章

  1. postman中添加cookie信息
  2. JavaScript 获取浏览器版本
  3. SpringBoot实现登陆拦截
  4. Azure 8 月新公布
  5. 查询sqlserver数据库,表占用数据大小
  6. Android学习总结(三)——IntentService的用法
  7. C++遍历文件及文件夹代码
  8. (二)SpringMVC之执行的过程
  9. 在SAP CRM WebClient UI中用javascript触发ABAP event
  10. 单调栈2 POJ3250 类似校内选拔I题