Skip to content
Related Articles

Related Articles

Find two vertices of an isosceles triangle in which there is rectangle with opposite corners (0, 0) and (X, Y)
  • Last Updated : 26 Jul, 2019

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

6 0 0 6

Time Complexity : O(1)

competitive-programming-img

My Personal Notes arrow_drop_up
Recommended Articles
Page :