题目:1051 复数乘法 - PAT (Basic Level) Practice (中文) (pintia.cn)
首先要知道复数乘法的公式:
#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;
}
比如 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;
}