多想想特殊情况
题目链接:SDNUOJ1079
题目描述
计算复数乘法(a+bi)*(c+di)
输入
一行内四个整数a,b,c,d
输出
一行,(a+bi)*(c+di)的结果
我相信不会有人写出0+0i这样的东西
注意 题目提示了虚部实部为0的情况,但是别忘了还有判断虚部是否为负数或者是否为1或- 1 的情况
代码
#include <iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int a,b,c,d;
cin>>a>>b>>c>>d;
int anss,ansx;
anss=a*c-b*d;
ansx=c*b+a*d;
if(anss==0&&ansx==0){
cout<<"0"<<endl;
}
else if(anss==0&&ansx!=1&&ansx!=-1){
cout<<ansx<<"i"<<endl;
}
else if(anss==0&&ansx==1&&ansx!=-1){
cout<<"i"<<endl;
}
else if(anss==0&&ansx!=1&&ansx==-1){
cout<<"-i"<<endl;
}
else if(ansx==0){
cout<<anss<<endl;
}
else if(ansx<0&&ansx!=-1) cout<<anss<<"-"<<-ansx<<"i"<<endl;
else if(ansx==-1) cout<<anss<<"-"<<"i"<<endl;
else if(ansx==1) cout<<anss<<"+"<<"i"<<endl;
else if(ansx>0&&ansx!=1) cout<<anss<<"+"<<ansx<<"i"<<endl;
return 0;
}