Given two integers X and Y. The task is to find two vertices of an isosceles triangle ABC(right-angled at B) which has one vertex at a point B(0, 0). And there is a rectangle with opposite sides (0, 0) and (X, Y). All the points of this rectangle are located inside or on the border of the triangle. Print 4 integers x1, y1, x2, y2, where A(x1, y1) and B(x2, y2).
Examples:
Input : X = 3, Y = 3
Output : 6 0 0 6
Input : X = -3, y = -2
Output : -5 0 0 -5
Approach :
Let Val = |x| + |y|. Then the first point is (Val * sign(x), 0) and the second point is (0, Val * sign(y)).
Let’s see how it works for x > 0 and y > 0. Other cases can be proved in a similar way.
We need to show, that (x, y) belongs to our triangle(including its borders). In fact (x, y) belongs to segment, connecting (x + y, 0) with (0, x + y). The line through (x + y, 0) and (0, x + y) is Y = – X + x + y. Using coordinates (x, y) in this equation proves our answer.
Below is the implementation of the above approach:
// C++ program to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) #include <bits/stdc++.h> using namespace std;
// Function to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) int Vertices( int x, int y)
{ // Required value;
int val = abs (x) + abs (y);
// print x1 and y1
cout << val * (x < 0 ? -1 : 1) << " 0 " ;
// print x2 and y3
cout << "0 " << val * (y < 0 ? -1 : 1);
} // Driver code int main()
{ int x = 3, y = 3;
// Function call
Vertices(x, y);
return 0;
} |
// Java program to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) class GFG
{ // Function to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) static void Vertices( int x, int y)
{ // Required value;
int val = Math.abs(x) + Math.abs(y);
// print x1 and y1
System.out.print(val * (x < 0 ? - 1 : 1 ) + " 0 " );
// print x2 and y3
System.out.print( "0 " + val * (y < 0 ? - 1 : 1 ));
} // Driver code public static void main(String[] args)
{ int x = 3 , y = 3 ;
// Function call
Vertices(x, y);
} } // This code is contributed by Rajput-Ji |
# Python3 program to find two vertices of an # isosceles triangle in which there is # rectangle with opposite side (0, 0) and (x, y) # Function to find two vertices of an # isosceles triangle in which there is # rectangle with opposite side (0, 0) and (x, y) def Vertices(x, y) :
# Required value;
val = abs (x) + abs (y);
# print x1 and y1
if x < 0 :
x = - 1
else :
x = 1
print (val * x, "0" ,end = " " );
# print x2 and y3
if y < 0 :
y = - 1
else :
y = 1
print ( "0" ,val * y);
# Driver code if __name__ = = "__main__" :
x = 3 ; y = 3 ;
# Function call
Vertices(x, y);
# This code is contributed by AnkitRai01 |
// C# program to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) using System;
class GFG
{ // Function to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) static void Vertices( int x, int y)
{ // Required value;
int val = Math.Abs(x) + Math.Abs(y);
// print x1 and y1
Console.Write(val * (x < 0 ? -1 : 1) + " 0 " );
// print x2 and y3
Console.Write( "0 " + val * (y < 0 ? -1 : 1));
} // Driver code public static void Main(String[] args)
{ int x = 3, y = 3;
// Function call
Vertices(x, y);
} } // This code is contributed by Rajput-Ji |
<script> // JavaScript program to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) // Function to find two vertices of an // isosceles triangle in which there is // rectangle with opposite side (0, 0) and (x, y) function Vertices(x, y)
{ // Required value;
let val = Math.abs(x) + Math.abs(y);
// print x1 and y1
document.write(val * (x < 0 ? -1 : 1) + " 0 " );
// print x2 and y3
document.write( "0 " + val * (y < 0 ? -1 : 1));
} // Driver code let x = 3, y = 3;
// Function call
Vertices(x, y);
// This code is contributed by Surbhi Tyagi. </script> |
6 0 0 6
Time Complexity : O(1)
Auxiliary Space: O(1)