给定整数A 、 B 、 C和D ,表示循环四边形的边长,任务是找到循环四边形的对角线长度。
例子:
Input: A = 10, B = 15, C = 20, D = 25
Output: 22.06 26.07
Input: A = 10, B = 30, C =50, D = 20
Output: 37.93 29.0
方法:对角线的长度可以使用以下公式计算:
[Tex]对角线 (q)=\sqrt{\frac{(ac+bd)(ab+cd)}{ad+bc}} [/Tex]
下面是上述方法的实现:
C++
// C++ Program to implement
// the above approach
#include
using namespace std;
// Function to calcualte the length of
// diagonals of a cyclic quadrilateral
vector Diagonals(int a, int b,
int c, int d)
{
vector 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 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 calcualte the length of
// diagonals of a cyclic quadrilateral
static Vector Diagonals(int a, int b,
int c, int d)
{
Vector ans = new Vector();
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 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 calcualte 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 calcualte the length of
// diagonals of a cyclic quadrilateral
static List Diagonals(int a, int b,
int c, int d)
{
List ans = new List();
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 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
输出:
22.06 26.07
时间复杂度: O(1)
辅助空间: O(1)