给定两个整数A和theta ,分别表示菱形边的长度和顶角,任务是找到菱形对角线的长度。
例子:
Input: A = 10, theta = 30
Output: 19.32 5.18
Input: A = 6, theta = 45
Output: 11.09 4.59
方法:
可以使用余弦定律解决该问题。使用由菱形的对角线和边形成的三角形上的余弦定律,可以得出以下关系来计算对角线的长度:
下面是上述方法的实现:
C++
// C++ program to implement
// the above approach
#include
using namespace std;
// Function to calculate the length
// of diagonals of a rhombus using
// length of sides and vertex angle
double Length_Diagonals(int a, double theta)
{
double p = a * sqrt(2 + (2 * cos(
theta * (3.141 / 180))));
double q = a * sqrt(2 - (2 * cos(
theta * (3.141 / 180))));
cout << fixed << setprecision(2) << p
<< " " << q;
}
// Driver Code
int main()
{
int a = 6;
int theta = 45;
// Function Call
Length_Diagonals(a, theta);
return 0;
}
// This code is contributed by Virusbuddah_
Java
// Java program to implement
// the above approach
class GFG{
// Function to calculate the length
// of diagonals of a rhombus using
// length of sides and vertex angle
static double[] Length_Diagonals(int a, double theta)
{
double p = a * Math.sqrt(2 + (2 *
Math.cos(theta * (Math.PI / 180))));
double q = a * Math.sqrt(2 - (2 *
Math.cos(theta * (Math.PI / 180))));
return new double[]{ p, q };
}
// Driver Code
public static void main(String[] args)
{
int A = 6;
double theta = 45;
double[] ans = Length_Diagonals(A, theta);
System.out.printf("%.2f" + " " + "%.2f",
ans[0], ans[1]);
}
}
// This code is contributed by Princi Singh
Python3
# Python Program to implement
# the above approach
import math
# Function to calculate the length
# of diagonals of a rhombus using
# length of sides and vertex angle
def Length_Diagonals(a, theta):
p = a * math.sqrt(2 + (2 * \
math.cos(math.radians(theta))))
q = a * math.sqrt(2 - (2 * \
math.cos(math.radians(theta))))
return [p, q]
# Driver Code
A = 6
theta = 45
ans = Length_Diagonals(A, theta)
print(round(ans[0], 2), round(ans[1], 2))
C#
// C# program to implement
// the above approach
using System;
class GFG{
// Function to calculate the length
// of diagonals of a rhombus using
// length of sides and vertex angle
static double[] Length_Diagonals(int a, double theta)
{
double p = a * Math.Sqrt(2 + (2 *
Math.Cos(theta * (Math.PI / 180))));
double q = a * Math.Sqrt(2 - (2 *
Math.Cos(theta * (Math.PI / 180))));
return new double[]{ p, q };
}
// Driver Code
public static void Main(String[] args)
{
int A = 6;
double theta = 45;
double[] ans = Length_Diagonals(A, theta);
Console.Write("{0:F2}" + " " + "{1:F2}",
ans[0], ans[1]);
}
}
// This code is contributed by gauravrajput1
输出:
11.09 4.59
时间复杂度: O(1)
辅助空间: O(1)