1. 程式人生 > >資料結構Java版 複數乘積(簽到題)

資料結構Java版 複數乘積(簽到題)

題目描述

數集拓展到實數範圍內,仍有些運算無法進行。比如判別式小於0的一元二次方程無解,因此將數集再次擴充,達到複數範圍。

  定義:形如z=a+bi的數稱為複數(complex number),其中規定i虛數單位,且i^2=i*i=-1(a,b是任意實數

  我們將複數z=a+bi中的實數a稱為複數z的實部(real part)記作Rez=a

  實數b稱為複數z的虛部(imaginary part)記作 Imz=b.

  已知:當b=0時,z=a,這時複數成為實數;

  當a=0且b≠0時 ,z=bi,我們就將其稱為純虛數

  定義: 對於複數z=a+bi,稱複數z'=a-bi為z的

共軛複數

  定義:將複數的實部與虛部的平方和的正的平方根的值稱為該複數的模,記作∣z∣

  規定複數的乘法按照以下的法則進行:

  設z1=a+bi,z2=c+di(a、b、c、d∈R)是任意兩個複數,那麼它們的積(a+bi)(c+di)=(ac-bd)+(bc+ad)i.

  其實就是把兩個複數相乘,類似兩個多項式相乘,在所得的結果中把i2換成-1,並且把實部與虛部分別合併.兩個複數的積仍然是一個複數.

輸入

兩個複數分兩行,每行兩個數,代表複數的實部和虛部。

輸出

兩個複數的乘積。

樣例輸入

1 1
1 1

樣例輸出

0 2

分析:題目說的很詳細乘積實部結果為一個複數的實部乘以另一個複數的實部加上一個負數的虛部乘以另一個複數的虛部的積的相反數,乘積虛部結果為兩個複數相互實部虛部相乘再相加即可

#include<iostream>
using namespace std;
int main()
{
	int a1,b1,a2,b2;
	cin>>a1>>b1>>a2>>b2;
	cout<<a1*a2+(-1)*b1*b2<<' '<<a1*b2+a2*b1<<endl;
}