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;
}

posted @ 2020-09-25 22:51  韩天尊  阅读(130)  评论(0)    收藏  举报