ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PTA乙级1051

2019-08-05 17:38:46  阅读:357  来源: 互联网

标签:1051 P1 R1 R2 double 乙级 nextDouble PTA Math


1051

复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​2=−1;也可以写成极坐标下的指数形式(R×e
​(Pi)​​ ),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (R(cos§+isin§)。
现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。

输入格式:

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

输出格式:

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

输入样例:

2.3 3.5 5.2 0.4

输出样例:

-8.68-8.23i

思路:这题写的时候还是想太多了看了大佬的解释不需要考虑其他的,就考虑下正负正常计算就行了,用printf就可以输出正确形式,要注意的是两数绝对值小于0.01的时候

代码:

package test1;

import java.util.Scanner;

public class PTA1051
{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        double R1=in.nextDouble();
        double P1=in.nextDouble();
        double R2=in.nextDouble();
        double P2=in.nextDouble();
        //计算cos以及sin
        double A0=R1*Math.cos(P1);
        double B0=R1*Math.sin(P1);
        double C0=R2*Math.cos(P2);
        double D0=R2*Math.sin(P2);
        //根据虚数计算方式得到结果
        double A=A0*C0-B0*D0;
        double B=A0*D0+C0*B0;

        if(Math.abs(A)<0.01) {//这里用Math.abs计算绝对值
            A=0;
        }
        if(Math.abs(B)<0.01) {
            B=0;
        }
        //输出题目要求的格式
        System.out.printf("%.2f",A);
        System.out.printf("%.2f",B);
    }
}

标签:1051,P1,R1,R2,double,乙级,nextDouble,PTA,Math
来源: https://blog.csdn.net/qq_30039097/article/details/98501254

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有