队友在比赛时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. (转) SYSTEM_HANDLE_INFORMATION中ObjectTypeIndex的定义

    typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO{ USHORT UniqueProcessId; USHORT CreatorBackTraceIndex ...

  2. HashTable源代码剖析

    <span style="font-size:14px;font-weight: normal;">public class Hashtable<K,V> ...

  3. hdu 4858 项目管理(vector模拟)

    # include <stdio.h> # include <algorithm> # include <string.h> # include <vecto ...

  4. C++类中static修饰的函数的使用

    //在C++中应该养成习惯:只用静态成员函数引用静态成员数据,而不引用非静态成员数据 #include <iostream>using namespace std;class st_inf ...

  5. 经常使用 Java API

    经常使用Java API 一. java.io.BufferedReader类(用于从文件里读入一段字符.所属套件:java.io) 1. 构造函数BufferedReader(java.io.Fil ...

  6. 使用JWT设计SpringBoot项目api接口安全服务

    转载直: 使用JWT设计SpringBoot项目api接口安全服务

  7. 模板方法模式-TemplateMethod

    模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的机构即可以重定义算法的某些特定步骤. 模板方法模式是通过吧不变形为搬移到超类,去除子类中的重复代码 ...

  8. (linux)platform_driver_probe与platform_driver_register的区别

      [驱动注册]platform_driver_register()与platform_device_register()          设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册 ...

  9. HDU2295 Radar —— Dancing Links 可重复覆盖

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2295 Radar Time Limit: 2000/1000 MS (Java/Others)     ...

  10. 织梦文章页调用当前栏目名称和url地址的方法

    其实织梦本身有这2个调用标签,可能大家没怎么注意,下面的代码就是织梦文章页调用当前栏目名称和url地址的方法: {dede:field name='typeurl' function=”GetType ...