这里给出的是一个半径为r的半圆,它内接一个正方形,而正方形又内接一个鲁洛三角形。任务是找到这个鲁洛三角形的最大可能面积。
例子:
Input : x = 5
Output : 14.0954
Input : x = 8
Output : 36.0842
求法:我们知道,内接半圆的正方形的边长是a = 2r/√5 。 (请参考这里)
此外,在鲁洛三角形中, x = a 。
所以, x = 2*r/√5
所以,鲁洛三角形的面积:
A = 0.70477*x^2 = 0.70477*(r^2/5)
下面是上述方法的实现:
C++
// C++ Program to find the biggest Reuleaux triangle
// inscribed within in a square which in turn
// is inscribed within a semicircle
#include
using namespace std;
// Function to find the biggest reuleaux triangle
float Area(float r)
{
// radius cannot be negative
if (r < 0)
return -1;
// height of the reuleaux triangle
float x = (2 * r) / sqrt(5);
// area of the reuleaux triangle
float A = 0.70477 * pow(x, 2);
return A;
}
// Driver code
int main()
{
float r = 5;
cout << Area(r) << endl;
return 0;
}
Java
// Java Program to find the biggest
// Reuleaux triangle inscribed within
// in a square which in turn is
// inscribed within a semicircle
import java.lang.Math;
class GFG
{
// Function to find the biggest reuleaux triangle
static float Area(float r)
{
// radius cannot be negative
if (r < 0)
return -1;
// height of the reuleaux triangle
float x = (2 * r) /(float)(Math.sqrt(5));
// area of the reuleaux triangle
float A = 0.70477f *(float)(Math.pow(x, 2));
return A;
}
// Driver code
public static void main(String[] args)
{
float r = 5;
System.out.println(Area(r));
}
}
// This code is contributed by Mukul Singh.
Python3
# Python3 Program to find the biggest
# Reuleaux triangle inscribed within
# in a square which in turn is inscribed
# within a semicircle
import math as mt
# Function to find the biggest
# reuleaux triangle
def Area(r):
# radius cannot be negative
if (r < 0):
return -1
# height of the reuleaux triangle
x = (2 * r) / mt.sqrt(5)
# area of the reuleaux triangle
A = 0.70477 * pow(x, 2)
return A
# Driver code
r = 5
print(Area(r))
# This code is contributed by
# Mohit Kumar 29
C#
// C# Program to find the biggest
// Reuleaux triangle inscribed within
// in a square which in turn is
// inscribed within a semicircle
using System;
class GFG
{
// Function to find the biggest reuleaux triangle
static double Area(double r)
{
// radius cannot be negative
if (r < 0)
return -1;
// height of the reuleaux triangle
double x = (2 * r) / (double)(Math.Sqrt(5));
// area of the reuleaux triangle
double A = 0.70477 * (double)(Math.Pow(x, 2));
return A;
}
// Driver code
public static void Main()
{
double r = 5;
Console.WriteLine(Area(r));
}
}
// This code is contributed by chandan_jnu
PHP
Javascript
输出:
14.0954