Roots Of A Quadratic Equation

Posted: 20 Nov, 2020
Difficulty: Easy

PROBLEM STATEMENT

Try Problem

You have been given 3 integers 'A', 'B', 'C' which are the coefficients of the quadratic equation (AX^2 + BX + C = 0). Your task is to find the real roots of the quadratic equation or report if no real roots exist (return a pair of -1).

For example:

Let’s consider the equation X^2 + 2X + 1 = 0 . We can see that the quadratic equation has no real roots. So we return a pair of -1 i.e. [-1, -1].

We can consider the equation X^2 - 5X - 6 = 0. As depicted from the equation the value of 'A' would be 1, 'B' would be -5 and 'C' would be -6. We can see that this equation has two distinct roots -2 and -3. Hence we return an array/sequence containing -2 and-3.

Note:
1. If the equation has repeated roots, return the roots twice.
2. If there are imaginary roots, return -1 twice.
3. If the root is not an integer, return the greatest integer value less 
than the root.
Input format:
The first line of input contains an integer ‘T’ denoting the number of test cases.

The first and the only line of each test case consists of three single space-separated integers 'A', 'B', and 'C' which denotes the integer coefficients in the polynomial: AX^2 + BX + C = 0.
Output Format:
For each test case, print in a single line two single space-separated integers, denoting the roots of the quadratic equation. 

The output of each test case will be printed in a separate line.
Note
You are not required to print anything; it has already been taken care of. Just implement the function and return the answer.
Constraints:
 1 <= T <= 10^5
-10^3 <= A, C <= 10^3
-10^4 <= B <= 10^4
 A ≠ 0

Time Limit: 1 sec
Approach 1

Since we need to find the roots of the quadratic equation, we can use the well known quadratic formula :

 

ROOT1 = (-B + sqrt(D)) / 2 * A

ROOT2 = (-B - sqrt(D)) / 2 * A

 

Where ‘D’ is the discriminant equal to (B ^ 2) - (4 * A * C).

 

Now depending on the value of ‘D’, we can have the following cases:

 

  1. If ‘D’ is less than 0, we will have imaginary roots, so we will return a pair that contains -1.
  2. If ‘D’ is equal to 0 we will have repeated roots, so we will return a pair that contains the same value twice.
  3. If ‘D’ is greater than 0 we will have 2 unique roots. In that case, return the two unique roots.
Try Problem