题目描述
数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于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,并且把实部与虚部分别合并.两个复数的积仍然是一个复数.
输入
两个复数分两行,每行两个数,代表复数的实部和虚部。
输出
两个复数的乘积。
#include<bits/stdc++.h>
using namespace std;
struct Complex {
int real;
int image;
};
void input(Complex&c) {
cin>>c.real>>c.image;
}
void disp(Complex c) {
cout<<c.real<<” “<<c.image;
}
Complex multi(Complex a,Complex b) {
Complex c;
c.real=a.real*b.real-a.image*b.image;
c.image=a.real*b.image+a.image*b.real;
return c;
}
int main() {
Complex a,b;
input(a);
input(b);
disp(multi(a,b));
return 0;
}