PTA【复数相乘】
队友在比赛时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【复数相乘】的更多相关文章
- [LeetCode] Complex Number Multiplication 复数相乘
Given two strings representing two complex numbers. You need to return a string representing their m ...
- PTA 复数四则运算
本题要求编写程序,计算2个复数的和.差.积.商. 输入格式: 输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部.题目保证C2不为0. 输出格式 ...
- C++ 实验 使用重载运算符实现一个复数类
实验目的: 1.掌握用成员函数重载运算符的方法 2.掌握用友元函数重载运算符的方法 实验要求: 1.定义一个复数类,描述一些必须的成员函数,如:构造函数,析构函数,赋值函数,返回数据成员值的函数等. ...
- BZOJ 3621: 我想那还真是令人高兴啊 计算几何 复数
https://www.lydsy.com/JudgeOnline/problem.php?id=3621 给定两个三角形,其中一个可以通过以某点为中心旋转并放缩的方式得到另一个,求这个中心 http ...
- 定义一个复数(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 ...
- 多项式相乘快速算法原理及相应C代码实现---用到fft
最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下. 1.多项式乘法 两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与 ...
- 闲话复数(1) | 不现实的虚数 i 为什么虚?它长成什么样?
原文 | https://mp.weixin.qq.com/s/y-Nb3S508UZuf_0GtRuNaQ 复数的英文是complex number,直译是复杂的数.最早接触复数大概是在高中时期,只 ...
- 复数基础及其2D空间的旋转
本文我们讨论复数及其旋转的含义.复数很有意思,本文介绍了复数的基本定义和性质,以及它关于旋转的几何意义. 复数对于旋转的两个方面极为重要: 1. 它引入了旋转算子(rotational operato ...
- Java练习 SDUT-4303_简单的复数运算(类和对象)
简单的复数运算(类和对象) Time Limit: 2000 ms Memory Limit: 65536 KiB Problem Description 设计一个类Complex,用于封装对复数的下 ...
随机推荐
- 基于社交网络的情绪化分析IV
基于社交网络的情绪化分析IV By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,类似度分析.后面两篇进行学 ...
- 【源代码】LruCache源代码剖析
上一篇分析了LinkedHashMap源代码,这个Map集合除了拥有HashMap的大部分特性之外.还拥有链表的特点,即能够保持遍历顺序与插入顺序一致. 另外.当我们将accessOrder设置为tr ...
- hive cli 启动缓慢问题
hive-0.13.1启动缓慢的原因 发现时间主要消耗在以下3个地方: 1. hadoopjar的时候要把相关的jar包上传到hdfs中(这里大概消耗5s,hive0.11一样,这个地方不太好优化) ...
- android 项目R文件丢失解决的方法
R文件丢失的原因有非常多,这里提供几种解决的方法: 1. 选中项目,点击 Project - Clean , 清理一下项目. 2. 选中项目,右键 选择 Android Tools - Fix P ...
- Activity左边滑出,右边滑入的动画切换
Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ...
- Animated progress view with CAGradientLayer(带翻译)
Animated progress view with CAGradientLayer(带翻译) Modern software design is getting flatter and thin ...
- c++vector简单实现
const int DEFAULT_CAP = 3; template <typename T> class vector { // int capacity; T* _data; int ...
- 细数AutoLayout以来UIView和UIViewController新增的相关API
本文转载至 http://www.itjhwd.com/autolayout-uiview-uiviewcontroller-api/ 细数AutoLayout以来UIView和UIViewContr ...
- iOS开发——高级篇——多线程的安全隐患
资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 一.解 ...
- java的gradle项目的基本配置
plugins { id 'org.springframework.boot' version '2.1.4.RELEASE' id 'java' } apply plugin: 'io.spring ...