给定两个整数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
Javascript
输出:
11.09 4.59
时间复杂度: O(1)
辅助空间: O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。