队友在比赛时A掉的。吊吊吊!!!

主要考虑这些情况吧|||

案例:

/*
3i i
-3 i
-1-i 1+i
i 1
-1-i -1-i
*/
-3
-3i
-2i
i
2i
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <queue>
using namespace std;
#define MAX 1010
#define INF 0x3f3f3f
int n,m;
int sum1,sum2;
void display(int a,int b,int c,int d)
{
sum1=a*c-b*d;
sum2=a*d+b*c;
// printf("%d %d %d %d\n",a,b,c,d);
}
int main()
{
while(1)
{
int i,j,k,t;
char s1[MAX],s2[MAX];
int a,b,c,d;
a=b=c=d=0;
scanf("%s%s",s1,s2);
int n1=strlen(s1);
int n2=strlen(s2);
int f1=0,f2=0;
for(i=0;i<n1;i++)
{
if(s1[i]=='i')
f1=1;
}
if(f1)
{
int cont=0;
for(i=0;i<n1;i++)
{
if(s1[i]=='-'||s1[i]=='+')
cont++;
}
if(cont==0)
{
for(i=0;i<n1-1;i++)
b=b*10+s1[i]-'0';
if(n1==1)
b=1;
}
if(cont==2)
{
for(i=1;i<n1-1;i++)
{
if(s1[i]=='-'||s1[i]=='+')
break;
a=a*10+s1[i]-'0';
}
a=-a;
k=i;
for(++i;i<n1-1;i++)
{
b=b*10+s1[i]-'0';
}
if(n1-k==2)
b=1;
// printf("%d\n",k);
if(s1[k]=='-')
b=-b;
}
if(cont==1)
{
if(s1[0]=='-')
{
for(i=1;i<n1-1;i++)
b=b*10+s1[i]-'0';
b=-b;
if(n1==2)
b=-1;
}
else
{
for(i=0;i<n1;i++)
{
if(s1[i]=='-'||s1[i]=='+')
break;
a=a*10+s1[i]-'0';
}
k=i;
for(++i;i<n1-1;i++)
{
b=b*10+s1[i]-'0';
}
if(n1-k==2)
b=1;
if(s1[k]=='-')
b=-b;
}
}
}
else
{
if(n1==1)
a=s1[0]-'0';
else if(s1[0]=='-')
{
for(i=1;i<n1;i++)
a=a*10+s1[i]-'0';
a=-a;
}
else
{
for(i=1;i<n1;i++)
a=a*10+s1[i]-'0';
}
b=0;
}
for(i=0;i<n2;i++)
{
if(s2[i]=='i')
f2=1;
}
if(f2)
{
int cont=0;
for(i=0;i<n2;i++)
{
if(s2[i]=='-'||s2[i]=='+')
cont++;
}
if(cont==0)
{
for(i=0;i<n2-1;i++)
d=d*10+s2[i]-'0';
if(n2==1)
d=1;
}
if(cont==2)
{
for(i=1;i<n2;i++)
{
if(s2[i]=='-'||s2[i]=='+')
break;
c=c*10+s2[i]-'0';
}
c=-c;
k=i;
for(++i;i<n2-1;i++)
{
d=d*10+s2[i]-'0';
}
if(n2-k==2)
d=1;
if(s2[k]=='-')
d=-d;
}
if(cont==1)
{
if(s2[0]=='-')
{
for(i=1;i<n2-1;i++)
d=d*10+s2[i]-'0';
d=-d;
if(n2==2)
d=-1;
}
else
{
for(i=0;i<n2;i++)
{
if(s2[i]=='-'||s2[i]=='+')
break;
c=c*10+s2[i]-'0';
}
k=i;
for(++i;i<n2-1;i++)
{
d=d*10+s2[i]-'0';
}
if(n2-k==2)
d=1;
if(s2[k]=='-')
d=-d;
}
}
}
else
{
if(n2==1)
c=s2[0]-'0';
else if(s2[0]=='-')
{
for(i=1;i<n2;i++)
c=c*10+s2[i]-'0';
c=-c;
}
else
{
for(i=1;i<n2;i++)
c=c*10+s2[i]-'0';
}
d=0;
}
display(a,b,c,d);
if(sum1==0&&sum2==0)
printf("0\n");
else if(sum1==0&&sum2!=0)
{
if(sum2==1)
printf("i\n");
else if(sum2==-1)
printf("-i\n");
else
printf("%di\n",sum2);
}
else if(sum1!=0&&sum2==0)
printf("%d\n",sum1);
else if(sum1!=0&&sum2!=0)
{
if(sum2>0)
{
if(sum2!=1)
printf("%d+%di\n",sum1,sum2);
else
printf("%d+i\n",sum1);
}
else
{
if(sum2!=-1)
printf("%d%di\n",sum1,sum2);
else
printf("%d-i\n",sum1);
}
}
}
return 0;
}

PTA【复数相乘】的更多相关文章

  1. [LeetCode] Complex Number Multiplication 复数相乘

    Given two strings representing two complex numbers. You need to return a string representing their m ...

  2. PTA 复数四则运算

    本题要求编写程序,计算2个复数的和.差.积.商. 输入格式: 输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部.题目保证C2不为0. 输出格式 ...

  3. C++ 实验 使用重载运算符实现一个复数类

    实验目的: 1.掌握用成员函数重载运算符的方法 2.掌握用友元函数重载运算符的方法 实验要求: 1.定义一个复数类,描述一些必须的成员函数,如:构造函数,析构函数,赋值函数,返回数据成员值的函数等. ...

  4. BZOJ 3621: 我想那还真是令人高兴啊 计算几何 复数

    https://www.lydsy.com/JudgeOnline/problem.php?id=3621 给定两个三角形,其中一个可以通过以某点为中心旋转并放缩的方式得到另一个,求这个中心 http ...

  5. 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Compl

    因标题框有限,题目未显示完整,以下再放一份: 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Compl ...

  6. 多项式相乘快速算法原理及相应C代码实现---用到fft

    最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下. 1.多项式乘法 两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与 ...

  7. 闲话复数(1) | 不现实的虚数 i 为什么虚?它长成什么样?

    原文 | https://mp.weixin.qq.com/s/y-Nb3S508UZuf_0GtRuNaQ 复数的英文是complex number,直译是复杂的数.最早接触复数大概是在高中时期,只 ...

  8. 复数基础及其2D空间的旋转

    本文我们讨论复数及其旋转的含义.复数很有意思,本文介绍了复数的基本定义和性质,以及它关于旋转的几何意义. 复数对于旋转的两个方面极为重要: 1. 它引入了旋转算子(rotational operato ...

  9. Java练习 SDUT-4303_简单的复数运算(类和对象)

    简单的复数运算(类和对象) Time Limit: 2000 ms Memory Limit: 65536 KiB Problem Description 设计一个类Complex,用于封装对复数的下 ...

随机推荐

  1. vue2.0 常用的 UI 库

    1.mint-ui 安装: npm install mint-ui --save 使用: main.js // MintUI组件库 import MintUI from 'mint-ui' impor ...

  2. C#面向对象 结构体和类的应用

  3. MySql 查询一周内记录

    本周内:select * from wap_content where week(created_at) = week(now) 查询一天:select * from table where to_d ...

  4. 第一次OllyDbg逆向记录(分析思路和注意点&其他文章)

    OllyDbg 操作菜单栏.工具栏.快捷键 C++调用加强 目录 OllyDbg 操作菜单栏.工具栏.快捷键    1 一.    载入观察    1 1.静态载入观察:    1 2.OD动态观察  ...

  5. apk程序查找方法调用

    有android killer,现在ida对android的支持等一些方便工具,此篇(关于搜索和修改代码)废弃. 没有好的调试工具下 常用插代码(如果怕影响寄存器值,可以将.locals xxx改多几 ...

  6. String、StringBilder和StringBuffer之间的区别

    1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuild ...

  7. Android Camera系统深入理解

    1. Android Camera系统架构 http://blog.csdn.net/myarrow/article/details/8489674

  8. MRP-MD04 中的函数

    1.需求溯源 : MD_PEGGING_NODIALOG 2.实时库存 : MD_STOCK_REQUIREMENTS_LIST_API 这个函数中MDPSX 和 MDEZX 是通过 MDPS 的 I ...

  9. file类简单操作

    file类可表示文件或文件夹 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; impor ...

  10. RestClient写法

    response = RestClient::Request.execute(:method=>:post, :url=> “http×××××”, :payload=>{:id=& ...