PAT(Basic Level) Practice : 1051 复数乘法 (15分)
1051 复数乘法 (15分)
测试点2,测试点3的坑
题目说实部虚部均保留两位小数
测试点2:
如果虚部小于-0.05才算是负数
转换符号后绝对值小于0.005的归零
测试点3:
实部绝对值小于0.005的归零
代码
#include <iostream>
#include"stdlib.h"
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;
#include<iomanip>
//精度
#include<cmath>
//round四舍五入取整
int main()
{
double r1,p1,r2,p2;
cin>>r1>>p1>>r2>>p2;
double res1=r1*r2*cos(p1+p2);
double res2=r1*r2*sin(p1+p2);
if(abs(res1)<0.005&&abs(res2)<0.005)
cout<<"0";
else
{
if(abs(res1)<0.005)
cout<<"0.00";
else
cout<<setiosflags(ios::fixed)<<setprecision(2)<<res1;
if(res2<-0.05)
{
cout<<"-";
res2=-res2;
}else
{
cout<<"+";
}
if(abs(res2)<0.005)
cout<<"0.00i";
else
cout<<setiosflags(ios::fixed)<<setprecision(2)<<res2<<"i";
}
return 0;
}