PAT 1051 复数乘法 25分

78 阅读1分钟

题目:1051 复数乘法 - PAT (Basic Level) Practice (中文) (pintia.cn)

解析:51_哔哩哔哩_bilibili

首先要知道复数乘法的公式:

image.png

#include<bits/stdc++.h>
using namespace std;

int main()
{
     double R1,P1,R2,P2;cin>>R1>>P1>>R2>>P2;


    //转换成A+Bi的形式
    double a=R1*cos(P1),b=R1*sin(P1);
    double c=R2*cos(P2),d=R2*sin(P2);

    //复数乘法
    double sum1,sum2;
    sum1=a*c-b*d;  //实部
    sum2=a*d+c*b;  //虚部

   if(sum2<0)printf("%.2lf%.2lfi\n",sum1,sum2);
    else printf("%.2lf+%.2lfi\n",sum1,sum2);
    return 0;
}

image.png

比如 0.003,保留两位会输出0.00。但是考虑实际应该现实输出0,所以我们应该加一个条件。

当<0.005的时候输出0

#include<bits/stdc++.h>
using namespace std;

int main()
{
     double R1,P1,R2,P2;cin>>R1>>P1>>R2>>P2;


    //转换成A+Bi的形式
    double a=R1*cos(P1),b=R1*sin(P1);
    double c=R2*cos(P2),d=R2*sin(P2);

    //复数乘法
    double sum1,sum2;
    sum1=a*c-b*d;  //实部
    sum2=a*d+c*b;  //虚部

    if(fabs(sum1)<0.005)sum1=0;
     if(fabs(sum2)<0.005)sum2=0;
    
   if(sum2<0)printf("%.2lf%.2lfi\n",sum1,sum2);
    else printf("%.2lf+%.2lfi\n",sum1,sum2);
    return 0;
}

image.png