Hello **Programmers/Coders,** Today we are going to share ** solutions of Programming problems of HackerRank of Programming Language Python**. At Each Problem with Successful submission with

**all Test Cases Passed,**you will get an score or marks. And after solving maximum problems, you will be getting stars. This will highlight your profile to the recruiters.

In this post, you will find the solution for **Classes Dealing with Complex Numbers in Python-HackerRank Problem**. We are providing the **correct and tested solutions** of coding problems present on **HackerRank**. If you are not able to solve any problem, then you can take help from our Blog/website.

Use “Ctrl+F” To Find Any Questions Answer. & For Mobile User, You Just Need To Click On Three dots In Your Browser & You Will Get A “Find” Option There. Use These Option to Get Any Random Questions Answer.

**Introduction To Python**

**Python **is a widely-used, interpreted, **object-oriented, and high-level programming** language with dynamic semantics, used for general-purpose programming. It was created by **Guido van Rossum**, and first released on **February 20, 1991**.

**Python **is a computer programming language often used to build websites and software, automate tasks, and conduct data analysis. It is also used to create various machine learning algorithm, and helps in Artificial Intelligence. Python is a general purpose language, meaning it can be used to create a variety of different programs and isn’t specialized for any specific problems. This versatility, along with its beginner-friendliness, has made it one of the most-used programming languages today. A survey conducted by industry analyst firm **RedMonk **found that it was the most popular programming language among developers in **2020**.

** Link for the Problem** – Classes Dealing with Complex Numbers in python – HackerRank Solution

Classes Dealing with Complex Numbers in python – HackerRank Solution

**Problem:**

For this challenge, you are given two complex numbers, and you have to print the result of their addition, subtraction, multiplication, division and modulus operations.

The real and imaginary precision part should be correct up to two decimal places.

**Input Format**

One line of input: The real and imaginary part of a number separated by a space.

**Output Format**

For two complex numbers and , the output should be in the following sequence on separate lines:

For complex numbers with non-zero real and complex part, the output should be in the following format:

Replace the plus symbol with a minus symbol when .

For complex numbers with a zero complex part i.e. real numbers, the output should be:

For complex numbers where the real part is zero and the complex part is non-zero, the output should be:

**Sample Input**

2 1 5 6

**Sample Output**

7.00+7.00i -3.00-5.00i 4.00+17.00i 0.26-0.11i 2.24+0.00i 7.81+0.00i

**Concept**

Python is a fully object-oriented language like C++, Java, etc. For reading about classes, refer here.

Methods with a double underscore before and after their name are considered as built-in methods. They are used by interpreters and are generally used in the implementation of overloaded operators or other built-in functionality.

__add__-> Can be overloaded for + operation

__sub__ -> Can be overloaded for - operation

__mul__ -> Can be overloaded for * operation

For more information on operator overloading in Python, refer here.

Classes Dealing with Complex Numbers in python – HackerRank Solution

import math class Complex(object): def __init__(self, real, imaginary): self.real = real self.imaginary = imaginary def __add__(self, no): a = self.real b = self.imaginary c = no.real d = no.imaginary return Complex(a + c, b + d) def __sub__(self, no): a = self.real b = self.imaginary c = no.real d = no.imaginary return Complex(a - c, b - d) def __mul__(self, no): a = self.real b = self.imaginary c = no.real d = no.imaginary real_mult = (a * c) - (b * d) imag_mult = (a * d) + (b * c) return Complex(real_mult, imag_mult) def __truediv__(self, no): a = self.real b = self.imaginary c = no.real d = no.imaginary real_numerator = a * c + b * d imag_numerator = b * c - a * d denom = c * c + d * d real_div = real_numerator / denom imag_div = imag_numerator / denom return Complex(real_div, imag_div) def mod(self): a = self.real b = self.imaginary return Complex(math.sqrt(a ** 2 + b ** 2), 0) def __str__(self): if self.imaginary == 0: result = '%.2f+0.00i' % (self.real) elif self.real == 0: if self.imaginary >= 0: result = '0.00+%.2fi' % (self.imaginary) else: result = '0.00-%.2fi' % (abs(self.imaginary)) elif self.imaginary > 0: result = '%.2f+%.2fi' % (self.real, self.imaginary) else: result = '%.2f-%.2fi' % (self.real, abs(self.imaginary)) return result if __name__ == '__main__': c = map(float, input().split()) d = map(float, input().split()) x = Complex(*c) y = Complex(*d) print(*map(str, [x+y, x-y, x*y, x/y, x.mod(), y.mod()]), sep='\n')