问题 F: 复数乘积

来源:互联网 发布:java开发环境是什么 编辑:程序博客网 时间:2024/06/06 07:13

题目描述
数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于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.
  其实就是把两个复数相乘,类似两个多项式相乘,在所得的结果中把i^2换成-1,并且把实部与虚部分别合并.两个复数的积仍然是一个复数.
输入
两个复数分两行,每行两个实数,代表复数的实部和虚部。
输出
两个复数的乘积。四舍五入舍去小数部分
样例输入
1 1
1 1
样例输出
0 2

#include<stdio.h>int main(){    float a,b,c,d,e,f;    scanf("%f%f\n%f%f\n",&a,&b,&c,&d);    e=a*c-d*b;    f=b*c+a*d;    printf("%.0f %.0f\n",e,f);    return 0;}
原创粉丝点击