-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclassComplex.py
53 lines (53 loc) · 1.72 KB
/
classComplex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Complex:
def __init__(self,a,b):
self.a =a
self.b =b
def __str__(self):
if self.a ==0:
if self.b<0 and self.b!=-1:
return str(self.b)+"i"
elif self.b ==1:
return "i"
elif self.b==-1:
return "-i"
elif self.b ==0 :
return "0"
elif self.b>0:
return str(self.b)+"i"
elif self.a>0:
if self.b<0 and self.b!=-1:
return str(self.a)+str(self.b)+"i"
elif self.b ==1:
return str(self.a)+"+i"
elif self.b==-1:
return str(self.a)+"-i"
elif self.b ==0 :
return str(self.a)
else:
return str(self.a)+"+"+str(self.b)+"i"
else:
if self.b<0 and self.b!=-1:
return str(self.a)+str(self.b)+"i"
elif self.b ==1:
return str(self.a)+"i"
elif self.b==-1:
return str(self.a)+"-i"
elif self.b ==0 :
return str(self.a)
else:
return str(self.a)+"+"+str(self.b)+"i"
def __add__(self,rhs):
return Complex(self.a+rhs.a,self.b+rhs.b)
def __mul__(self,rhs):
return Complex((self.a*rhs.a)-(self.b*rhs.b),(self.a*rhs.b)+(self.b*rhs.a))
def __truediv__(self,rhs):
deno = rhs.a**2+rhs.b**2
return Complex((self.a*rhs.a+self.b*rhs.b)/deno,((-self.a*rhs.b+self.b*rhs.a)/deno))
t, a, b, c, d = [int(x) for x in input().split()]
c1 = Complex(a,b)
c2 = Complex(c,d)
if t == 1 : print(c1)
elif t == 2 : print(c2)
elif t == 3 : print(c1+c2)
elif t == 4 : print(c1*c2)
else : print(c1/c2)