Given integers A, B, C, and D, denoting the length of sides of a Cyclic Quadrilateral, the task is to find the length of diagonals of a cyclic quadrilateral.
Examples:
Input: A = 10, B = 15, C = 20, D = 25
Output: 22.06 26.07Input: A = 10, B = 30, C =50, D = 20
Output: 37.93 29.0
Approach: The length of diagonals can be calculated using the following equations:
[Tex]Diagonal (q)=\sqrt{\frac{(ac+bd)(ab+cd)}{ad+bc}} [/Tex]
Below is the implementation of the above approach:
C++
// C++ Program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate the length of // diagonals of a cyclic quadrilateral vector< float > Diagonals( int a, int b, int c, int d) { vector< float > ans; ans.push_back( sqrt (((a * c) + (b * d)) * ((a * d) + (b * c)) / ((a * b) + (c * d)))); ans.push_back( sqrt (((a * c) + (b * d)) * ((a * b) + (c * d)) / ((a * d) + (b * c)))); return ans; } // Driver Code int main() { int A = 10; int B = 15; int C = 20; int D = 25; // Function Call vector< float > ans = Diagonals(A, B, C, D); // Print the final answer printf ( "%.2f %.2f" , (ans[0]) + .01, ans[1] + .01); } // This code is contributed by Amit Katiyar |
Java
// Java Program to implement // the above approach import java.util.*; class GFG{ // Function to calculate the length of // diagonals of a cyclic quadrilateral static Vector<Float> Diagonals( int a, int b, int c, int d) { Vector<Float> ans = new Vector<Float>(); ans.add(( float ) Math.sqrt(((a * c) + (b * d)) * ((a * d) + (b * c)) / ((a * b) + (c * d)))); ans.add(( float ) Math.sqrt(((a * c) + (b * d)) * ((a * b) + (c * d)) / ((a * d) + (b * c)))); return ans; } // Driver Code public static void main(String[] args) { int A = 10 ; int B = 15 ; int C = 20 ; int D = 25 ; // Function Call Vector<Float> ans = Diagonals(A, B, C, D); // Print the final answer System.out.printf( "%.2f %.2f" , (ans.get( 0 )) + . 01 , ans.get( 1 ) + . 01 ); } } // This code is contributed by 29AjayKumar |
Python3
# Python3 program to implement # the above approach import math # Function to calculate the length of # diagonals of a cyclic quadrilateral def Diagonals(a, b, c, d): p = math.sqrt(((a * c) + (b * d)) * ((a * d) + (b * c)) / ((a * b) + (c * d))) q = math.sqrt(((a * c) + (b * d)) * ((a * b) + (c * d)) / ((a * d) + (b * c))) return [p, q] # Driver Code A = 10 B = 15 C = 20 D = 25 # Function Call ans = Diagonals(A, B, C, D) # Print the final answer print ( round (ans[ 0 ], 2 ), round (ans[ 1 ], 2 )) |
C#
// C# Program to implement // the above approach using System; using System.Collections.Generic; class GFG{ // Function to calculate the length of // diagonals of a cyclic quadrilateral static List< float > Diagonals( int a, int b, int c, int d) { List< float > ans = new List< float >(); ans.Add(( float ) Math.Sqrt(((a * c) + (b * d)) * ((a * d) + (b * c)) / ((a * b) + (c * d)))); ans.Add(( float ) Math.Sqrt(((a * c) + (b * d)) * ((a * b) + (c * d)) / ((a * d) + (b * c)))); return ans; } // Driver Code public static void Main(String[] args) { int A = 10; int B = 15; int C = 20; int D = 25; // Function Call List< float > ans = Diagonals(A, B, C, D); // Print the readonly answer Console.Write( "{0:F2} {1:F2}" , (ans[0]) + .01, ans[1] + .01); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript Program to implement // the above approach // Function to calculate the length of // diagonals of a cyclic quadrilateral function Diagonals(a, b, c, d) { var p = parseFloat( Math.sqrt(((a * c) + (b * d)) * ((a * d) + (b * c)) / ((a * b) + (c * d)))); var q = parseFloat( Math.sqrt(((a * c) + (b * d)) * ((a * b) + (c * d)) / ((a * d) + (b * c)))); return [p, q]; } // Driver Code var A = 10; var B = 15; var C = 20; var D = 25; // Function Call var ans = Diagonals(A, B, C, D) // Print the final answer document.write(ans[0].toFixed(2) + " " , ans[1].toFixed(2)); // This code is contributed by kirti </script> |
22.06 26.07
Time Complexity: O(log n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!