首页 > 其他分享 >PAT Basic 1051. 复数乘法

PAT Basic 1051. 复数乘法

时间:2023-03-25 13:34:56浏览次数:46  
标签:p2 1051 p1 resRe r1 r2 resIm Basic PAT

PAT Basic 1051. 复数乘法

1. 题目描述:

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

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

2. 输入格式:

输入在一行中依次给出两个复数的 \(R1\), \(P1\), \(R2\), \(P2\),数字间以空格分隔。

3. 输出格式:

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

4. 输入样例:

2.3 3.5 5.2 0.4

5. 输出样例:

-8.68-8.23i

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

本以为是除草题,会复数乘法规则就能AC,结果第一次提交只过了一个测试点,testpoint1,2,3都报wrong answer。。。

检查了下发现当虚部\(B\)为正数时我没有输出"+",改过来后(注释掉的代码部分)testpoint2,3依然报错。检查了逻辑感觉没问题,无奈只能参考大佬题解:PAT-Basic-1051. 复数乘法 – Lnyan's Blog (llonely.com) 和https://blog.csdn.net/liuchuo/article/details/51994291

这里的主要bug点就是最后结果保留2位小数时,一些接近0的负数在四舍五入后会输出-0.00,不符合计算机存储规则(只有+0,没有-0?虽然我感觉输出-0.00逻辑上没问题,只是跟测试用例不符罢了。。。),所以需要额外判断下,都输出0.00+0.00,改过来后AC。

My Code:

// #include <stdio.h>
// #include <math.h> // sin cos header

// // first submit testpoint1, 2, 3 wrong answer
// int main(void)
// {
//     double r1=0, p1=0, r2=0, p2=0;
//     double resRe=0, resIm = 0;
    
//     scanf("%lf%lf%lf%lf", &r1, &p1, &r2, &p2);
//     resRe = r1*r2*cos(p1+p2);
//     resIm = r1*r2*sin(p1+p2);
    
// //     if(resRe < 0)
// //     {
// //         if(resIm<0)
// //             printf("%.2lf%.2lfi\n", resRe, resIm);
// //         else // to print + when Im part > 0, after this debug, testpoint1 accepted, 2, 3 still wrong answer
// //             printf("%.2lf+%.2lfi\n", resRe, resIm);
// //     }
// //     else
// //     {
//         if(resIm<0)
//             printf("%.2lf%.2lfi\n", resRe, resIm);
//         else// to print + when Im part > 0, after this debug, testpoint1 accepted, 2, 3 still wrong answer
//             printf("%.2lf+%.2lfi\n", resRe, resIm);
// //     }
    
//     return 0;
// }

#include <stdio.h>
#include <math.h> // sin cos header
int main(void)
{
    double r1=0, p1=0, r2=0, p2=0;
    double resRe=0, resIm = 0;
    
    scanf("%lf%lf%lf%lf", &r1, &p1, &r2, &p2);
    resRe = r1*r2*cos(p1+p2);
    resIm = r1*r2*sin(p1+p2);
    
    if(resRe+0.005>0 && resRe<0)
        printf("0.00");
    else
        printf("%.2lf", resRe);
    
    if(resIm+0.005>0 && resIm<0)
        printf("+0.00i\n");
    else if(resIm<0)
        printf("%.2lfi\n", resIm);
    else
        printf("+%.2lfi\n", resIm);
    
//     // LNYAN' solution, actually still have bug, for -0.009, the answer should be -0.01.
//     if(resRe > -1e-2)
//         printf("%.2lf", fabs(resRe));
//     else
//         printf("-%.2lf", fabs(resRe));
    
//     if(resIm > -1e-2)
//         printf("+%.2lfi\n", fabs(resIm));
//     else
//         printf("-%.2lfi\n", fabs(resIm));
    
    return 0;
}

标签:p2,1051,p1,resRe,r1,r2,resIm,Basic,PAT
From: https://www.cnblogs.com/tacticKing/p/17254572.html

相关文章

  • DesignPattern-part1
    title:"modernC++DesignPattern-Part1"date:2018-04-03T16:06:33+08:00lastmod:2018-04-03T16:06:33+08:00draft:falsekeywords:[设计模式]tags:[设计模式,C......
  • DesignPattern-part3
    title:"modernC++DesignPattern-Part3"date:2018-04-12T19:08:49+08:00lastmod:2018-04-12T19:08:49+08:00keywords:[设计模式,C++]tags:[设计模式]categorie......
  • DesignPattern-part2
    title:"modernC++DesignPattern-Part2"date:2018-04-10T19:08:49+08:00lastmod:2018-04-11T19:08:49+08:00keywords:[设计模式,C++]tags:[设计模式]categorie......
  • WPF 使用Path绘制几何图形
    原创:https://blog.csdn.net/chulijun3107/article/details/105461106/ Path类继承自Shape,可以绘制很多简单的,复合的图形。Path类通过提供的Data属性,Data属性接受一个G......
  • Node Sass version 8.0.0 is incompatible with ^4.0.0.
    这是因为当前版本与4.0.0不兼容卸载当前版本sass:   npmuninstallnode-sass安装指定版本sass:   [email protected] 参考这里 https://www.cn......
  • PAT Basic 1049. 数列的片段和
    PATBasic1049.数列的片段和1.题目描述:给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1,0.2,0.3,0.4},我们有(0.1)(0.1,0.2)......
  • jsonpath解析淘票票城市
    步骤:首先找到城市的接口通过F12打开检查点击北京即可得到爬取数据的接口打开url发现显示的是jsonp121({"returnCode":"0","returnValue":{}});原因:​ 淘票票的请求头......
  • pathlib -- 面向对象的文件系统路径
    ......
  • xpath元素定位常用的几种方法
    元素定位有8种方式,但是在工作中一般都用css、xpath定位。id定位需要开发配合,而且项目迭代很快,大多都是用的框架,不会单独去定义id。css定位语法比较简洁,运行速度稍快,但总......
  • SPP(Spatial Pyramid Pooling:空间金字塔)
    fasterrcnn中ROIPooling与SPP理解、一、SPP作用1、目的:将不同大小的窗口输入得到同样大小的窗口输出1)解释:在卷积的操作中,对输入的尺寸是没有限制的,但是大多数网络结......