1051
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i2=−1;也可以写成极坐标下的指数形式(R×e
(Pi) ),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (R(cos§+isin§)。
现给定两个复数的 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
思路:这题写的时候还是想太多了看了大佬的解释不需要考虑其他的,就考虑下正负正常计算就行了,用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);
}
}