zoukankan      html  css  js  c++  java
  • B1051 复数乘法

    复数可以写成 ( 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 1;也可以写成极坐标下的指数形式 (,其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (。

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

    输入格式:

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

    输出格式:

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

    输入样例:

    2.3 3.5 5.2 0.4

    输出样例:

    -8.68-8.23i


    最终AC的代码如下:
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    struct Fnum{
        double a; //实数部分
        double b; //虚数部分
        Fnum(){
            a = 0;
            b = 0;
        }
        
    };
    
    Fnum getFnum(double r, double p){
        Fnum n;
        n.a = r * cos(p);
        n.b = r * sin(p);
        return n;
    }
    
    int main(){
        double r1, p1, r2, p2;
        Fnum A, B, ans;
        scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);
        A = getFnum(r1, p1);
        B = getFnum(r2, p2);
        ans.a = A.a * B.a - (A.b * B.b);
        ans.b = A.a * B.b + A.b * B.a;
        if(fabs(ans.a)<0.01){
            ans.a = 0.00;
        }
        if(fabs(ans.b)<0.01){
            ans.b = 0.00;
        }
        if(ans.b<0){
            printf("%.2f%.2fi
    ", ans.a, ans.b);
        }else{
            printf("%.2f+%.2fi
    ", ans.a, ans.b);
        }
        return 0;
    }
    当然了,第一次写的时候,并没有AC,只通过了第一个测试用例。之后看了一位大佬的博客(链接:https://www.jianshu.com/p/9d0b6f9638b3),才发现了两个坑点。

    坑点一:题目要求只输出两位小数,因此绝对值<0.01的数都用0.00代替。
    坑点二:当虚数部分(即B)为正数时,前面应该有一个 '+' 号。
  • 相关阅读:
    Java的格式化输出
    常用排序算法的Python实现
    零基础自学用Python 3开发网络爬虫(一)
    Python常见数据结构整理
    百度天气预报API的使用(java版本)
    大总结
    CCS学习(三)
    CSS学习(页外引用还不懂)
    CSS自定义动画
    ssm日期格式转换
  • 原文地址:https://www.cnblogs.com/heyour/p/12231012.html
Copyright © 2011-2022 走看看