Minimum and maximum possible length of the third side of a triangle
Given two sides of a triangle s1 and s2, the task is to find the minimum and maximum possible length of the third side of the given triangle. Print -1 if it is not possible to make a triangle with the given side lengths. Note that the length of all the sides must be integers.
Examples:
Input: s1 = 3, s2 = 6
Output:
Max = 8
Min = 4
Input: s1 = 5, s2 = 8
Output:
Max = 12
Min = 4
Approach: Let s1, s2 and s3 be the sides of the given triangle where s1 and s2 are given. As we know that in a triangle, the sum of two sides must always be greater than the third side. So, the following equations must be satisfied:
- s1 + s2 > s3
- s1 + s3 > s2
- s2 + s3 > s1
Solving for s3, we get s3 < s1 + s2, s3 > s2 – s1 and s3 > s1 – s2.
It is clear now that the length of the third side must lie in the range (max(s1, s2) – min(s1, s2), s1 + s2)
So, the minimum possible value will be max(s1, s2) – min(s1, s2) + 1 and the maximum possible value will be s1 + s2 – 1.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
void find_length( int s1, int s2)
{
if (s1 <= 0 || s2 <= 0) {
cout << -1;
return ;
}
int max_length = s1 + s2 - 1;
int min_length = max(s1, s2) - min(s1, s2) + 1;
if (min_length > max_length) {
cout << -1;
return ;
}
cout << "Max = " << max_length << endl;
cout << "Min = " << min_length;
}
int main()
{
int s1 = 8, s2 = 5;
find_length(s1, s2);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static void find_length( int s1, int s2)
{
if (s1 <= 0 || s2 <= 0 )
{
System.out.print(- 1 );
return ;
}
int max_length = s1 + s2 - 1 ;
int min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1 ;
if (min_length > max_length)
{
System.out.print(- 1 );
return ;
}
System.out.println( "Max = " + max_length);
System.out.print( "Min = " + min_length);
}
public static void main (String[] args)
{
int s1 = 8 , s2 = 5 ;
find_length(s1, s2);
}
}
|
Python3
def find_length(s1, s2) :
if (s1 < = 0 or s2 < = 0 ) :
print ( - 1 , end = "");
return ;
max_length = s1 + s2 - 1 ;
min_length = max (s1, s2) - min (s1, s2) + 1 ;
if (min_length > max_length) :
print ( - 1 , end = "");
return ;
print ( "Max =" , max_length);
print ( "Min =" , min_length);
if __name__ = = "__main__" :
s1 = 8 ;
s2 = 5 ;
find_length(s1, s2);
|
C#
using System;
class GFG
{
static void find_length( int s1, int s2)
{
if (s1 <= 0 || s2 <= 0)
{
Console.Write(-1);
return ;
}
int max_length = s1 + s2 - 1;
int min_length = Math.Max(s1, s2) - Math.Min(s1, s2) + 1;
if (min_length > max_length)
{
Console.WriteLine(-1);
return ;
}
Console.WriteLine( "Max = " + max_length);
Console.WriteLine( "Min = " + min_length);
}
public static void Main ()
{
int s1 = 8, s2 = 5;
find_length(s1, s2);
}
}
|
Javascript
<script>
function find_length(s1 , s2)
{
if (s1 <= 0 || s2 <= 0)
{
document.write(-1);
return ;
}
var max_length = s1 + s2 - 1;
var min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1;
if (min_length > max_length)
{
document.write(-1);
return ;
}
document.write( "Max = " + max_length+ "<br/>" );
document.write( "Min = " + min_length);
}
var s1 = 8, s2 = 5;
find_length(s1, s2);
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
07 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...