|
3 | 3 | Subdomain : Classes
|
4 | 4 | Domain : Python
|
5 | 5 | Author : Ahmedur Rahman Shovon
|
| 6 | +Updater : Imtiaz Ahmed |
6 | 7 | Created : 15 July 2016
|
| 8 | +Updated : 30 August 2022 |
7 | 9 | Problem : https://www.hackerrank.com/challenges/class-1-dealing-with-complex-numbers/problem
|
8 | 10 | '''
|
9 |
| -# Enter your code here. Read input from STDIN. Print output to |
10 |
| - |
11 |
| - |
12 |
| -c_str_ar=raw_input().strip().split() |
13 |
| -d_str_ar=raw_input().strip().split() |
14 |
| - |
15 |
| -def custom_print(n): |
16 |
| - r=n.real |
17 |
| - i=n.imag |
18 |
| - ret_str="" |
19 |
| - if(i==0 and r==0): |
20 |
| - ret_str="0.00" |
21 |
| - elif(r==0): |
22 |
| - tmp_str="%.2f" %i |
23 |
| - ret_str=tmp_str+"i" |
24 |
| - elif(i==0): |
25 |
| - tmp_str="%.2f" %r |
26 |
| - ret_str=tmp_str |
27 |
| - else: |
28 |
| - tmp_str1="%.2f" %r |
29 |
| - tmp_str2="%.2f" %i |
30 |
| - if(i>0): |
31 |
| - ret_str=tmp_str1+" + "+tmp_str2+"i" |
| 11 | +import math |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +class Complex(): |
| 16 | + def __init__(self, real, imaginary): |
| 17 | + self.real = real |
| 18 | + self.imaginary = imaginary |
| 19 | + |
| 20 | + def __add__(self, no): |
| 21 | + return Complex(self.real + no.real, self.imaginary + no.imaginary) |
| 22 | + |
| 23 | + def __sub__(self, no): |
| 24 | + return Complex(self.real - no.real, self.imaginary - no.imaginary) |
| 25 | + |
| 26 | + def __mul__(self, no): |
| 27 | + return Complex(self.real * no.real - self.imaginary * no.imaginary, self.real * no.imaginary + self.imaginary * no.real) |
| 28 | + |
| 29 | + def __truediv__(self, no): |
| 30 | + divider = no.real ** 2 + no.imaginary ** 2 |
| 31 | + return Complex((self.real * no.real + self.imaginary * no.imaginary)/divider, (self.imaginary * no.real - self.real * no.imaginary)/divider) |
| 32 | + |
| 33 | + def mod(self): |
| 34 | + return Complex(math.sqrt(self.real ** 2 + self.imaginary ** 2), 0.00) |
| 35 | + |
| 36 | + def __str__(self): |
| 37 | + if self.imaginary == 0: |
| 38 | + result = "%.2f+0.00i" % (self.real) |
| 39 | + elif self.real == 0: |
| 40 | + if self.imaginary >= 0: |
| 41 | + result = "0.00+%.2fi" % (self.imaginary) |
| 42 | + else: |
| 43 | + result = "0.00-%.2fi" % (abs(self.imaginary)) |
| 44 | + elif self.imaginary > 0: |
| 45 | + result = "%.2f+%.2fi" % (self.real, self.imaginary) |
32 | 46 | else:
|
33 |
| - i=i*-1 |
34 |
| - tmp_str2="%.2f" %i |
35 |
| - ret_str=tmp_str1+" - "+tmp_str2+"i" |
36 |
| - print ret_str |
37 |
| - |
38 |
| -cr=float(c_str_ar[0]) |
39 |
| -ci=float(c_str_ar[1]) |
40 |
| -dr=float(d_str_ar[0]) |
41 |
| -di=float(d_str_ar[1]) |
42 |
| -c=complex(cr,ci) |
43 |
| -d=complex(dr,di) |
44 |
| - |
45 |
| -val_add=c+d |
46 |
| -val_sub=c-d |
47 |
| -val_mul=c*d |
48 |
| -val_div=c/d |
49 |
| -mod_c=abs(c) |
50 |
| -mod_d=abs(d) |
51 |
| - |
52 |
| -custom_print(val_add) |
53 |
| -custom_print(val_sub) |
54 |
| -custom_print(val_mul) |
55 |
| -custom_print(val_div) |
56 |
| - |
57 |
| - |
58 |
| -print "%.2f" %mod_c |
59 |
| -print "%.2f" %mod_d |
| 47 | + result = "%.2f-%.2fi" % (self.real, abs(self.imaginary)) |
| 48 | + return result |
| 49 | + |
| 50 | +if __name__ == '__main__': |
| 51 | + c = map(float, input().split()) |
| 52 | + d = map(float, input().split()) |
| 53 | + x = Complex(*c) |
| 54 | + y = Complex(*d) |
| 55 | + print(*map(str, [x+y, x-y, x*y, x/y, x.mod(), y.mod()]), sep='\n') |
0 commit comments