SDNUOJ1079

多想想特殊情况

题目链接: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;
}

我条件判断太麻烦了,但是不改了,因为,懒

哈哈哈

猜你喜欢

转载自blog.csdn.net/L_Saint00/article/details/83050105