1051 复数乘法 (15 分)

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

输入样例:
2.3 3.5 5.2 0.4

输出样例:
-8.68-8.23i

主要难度在于对复数的认识。

R1*(cos(P1)+i*sin(P1))*R2*(cos(P2)+i*sin(P2))
=R1*R2*(cos(P1)*cos(P2)+i*cos(P1)*sin(P2)+i*sin(P1)*cos(P2)+i*i*sin(P1)*sin(P2))
=R1*R2*(cos(P1)*cos(P2)+i*i*sin(P1)*sin(P2)+(cos(P1)*sin(P2)+sin(P1)*cos(P2))*i)//因为i*i=-1
=R1*R2*(cos(P1)*cos(P2)-sin(P1)*sin(P2)+(cos(P1)*sin(P2)+sin(P1)*cos(P2))*i)
=R1*R2*(cos(P1+P2)+sin(P1+P2)*i)
=R1*R2*cos(P1+P2)+R1*R2*sin(P1+P2)*i

所以

  A+B*i = R1*R2*cos(P1+P2)+R1*R2*sin(P1+P2)*i

以至于

## A=R1*R2*cos(P1+P2)
## B=R1*R2*sin(P1+P2)*i

cos与sin头文件:#include < cmath> 。

注意点:
如果 B 是负数,则应该写成 A-|B|i 的形式
可以将输出格式改成

printf("%0.2f-%0.2fi",a,fabs(b));

因为实部和虚部保留2位小数,所以A、B绝对值是<0.01的数,必须要把它们设置为零,否则测试点3,4无法通过。

if(A<0.01&&A>-0.01){A=0;
}
if(B<0.01&&B>-0.01){B=0;
}

代码:

#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main(){double epsilon=0.01;double R1,P1,R2,P2;cin>>R1>>P1>>R2>>P2;double A=R1*R2*cos(P1+P2);double B=R1*R2*sin(P1+P2);if(A<epsilon&&A>-epsilon){A=0;        }if(B<epsilon&&B>-epsilon){B=0;}if(B<0){printf("%.2lf-%.2lfi",A,fabs(B));   }else {printf("%.2lf+%.2lfi",A,B);}//printf("%.2f",2.3*5.2*cos(3.5+0.4));//printf("%.2f",2.3*5.2*sin(3.5+0.4));//cout<<2.3*5.2*cos(3.5+0.4)<<endl;//cout<<2.3*5.2*sin(3.5+0.4)<<endl;return 0;
}

1051 复数乘法 (15 分)借鉴C++ PAT (Basic Level) Practice相关推荐

  1. pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...

    1039 到底买不买 (20分) 原题链接:传送门 一.题目: 输入样例 1: ppRYYGrrYBR2258 YrR8RrY 输出样例 1: Yes 8 输入样例 2: ppRYYGrrYB225 ...

  2. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  3. C++学习之路 | PTA乙级—— 1051 复数乘法 (15 分)(精简)

    1051 复数乘法 (15 分) 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i ​2 ​​ =−1:也可以写成极坐标下的指数形式 (R×e ​(Pi) ...

  4. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  5. PTA 1051 复数乘法 (15 分) C++实现

    1051 复数乘法 (15 分) 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2 = −1:也可以写成极坐标下的指数形式 (R×e(Pi) ),其中 ...

  6. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  7. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  8. PAT (Basic Level) Practice (中文)答案合集

    准备复试专用,目标刷完全部中文题! 1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ...

  9. (Python) PAT(Basic Level) Practice 刷题笔记(34-66)

    我的代码仅能解题,效率不高也不够简洁,欢迎师傅们提出建议,能让我加以改进. Practice 1036 跟奥巴马一起编程 (15 分) 1037 在霍格沃茨找零钱 (20 分) 1038 统计同成绩学 ...

最新文章

  1. 机器视觉学习笔记(4)——单目摄像机标定参数说明
  2. python 画三维函数图-如何用Matplotlib 画三维图的示例代码
  3. 如何使用vscode安装和调试Java程序
  4. LeetCode—207. 课程表
  5. java修改pdf内容流_java – 在PDFBox中,如何更改PDRectangle对象的原点(0,0)?
  6. golang web开发获取get、post、cookie参数
  7. struts2学到屎挫死-学习笔记(4)
  8. 聚宽 get_price 多个股票数据_上证指数(000001)股票历史数据,下载上证指数(000001历史数据_股票股市历史数据下载股票数据网...
  9. Linux 系统-----vim命令详解
  10. 产品经理工具之软件篇
  11. linux下串口(serial)和串口驱动
  12. OpenCV-Python教程:色彩空间变换(cvtColor)
  13. JAVA知识体系之分布式篇(四)——Kafka
  14. Java用Tessdata做OCR图片文字识别
  15. PDF打印内容缺失问题解决办法
  16. 关于小程序区服登录账号换模拟器登录的操作
  17. Fuzzing及Sulley简介
  18. 2022 年(23届)计算机保研经验分享(北航、东南、西工大、哈工大、中山等)
  19. 【毕业设计】LSTM预测算法(股票预测 天气预测 房价预测)
  20. 《曼昆经济学原理》读书笔记

热门文章

  1. call()、apply()、bind()的使用和区别以及使用场景
  2. NVIDIA DPU — 安装部署
  3. json转为tfrecord格式文件怎么转_Origin教程|定向提取所需帧图(视频转图片)
  4. 图扑数字孪生空冷机组,助推智慧电厂拥抱“双碳”
  5. 赖美云的认证照_赖美云《不渺小》获千万人气单曲认证 热度口碑齐爆棚
  6. 《修炼忍辱44招》能忍,会忍,善忍—不愠不火是一种善于忍耐的处世之道
  7. 高手不用Redis内存数据库一
  8. cocos creater 实现消除星星小游戏
  9. 瑞柏匡丞_步步惊心的大数据
  10. 两台计算机只换硬盘可以吗,客户带电脑来升级,两台变成一台,客户:一台电脑就换一个硬盘?...