题目描述
数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于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,并且把实部与虚部分别合并.两个复数的积仍然是一个复数.
本题是附加代码模式,主函数main的代码会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉自己的main函数。
输入
两个复数分两行,每行两个数,代表复数的实部和虚部。
输出
两个复数的乘积。
样例输入
1 1
1 1
样例输出
0 2
提示
解:
#include<iostream>
using namespace std;
struct Complex{
int r;
int i;
};
Complex Mul(Complex c1,Complex c2){
Complex c;
c.r = c1.r*c2.r-c1.i*c2.i;
c.i = c1.i*c2.r+c1.r*c2.i;
return c;
}
int main()
{
Complex c1,c2;
cin >> c1.r >> c1.i >> c2.r >> c2.i;
Complex c = Mul(c1,c2);
cout << c.r << " " << c.i << endl;
return 0;
}



95

被折叠的 条评论
为什么被折叠?



