# Largest trapezoid that can be inscribed in a semicircle

Given a semicircle of radius **r**, the task is to find the largest trapezoid that can be inscribed in the semicircle, with base lying on the diameter.**Examples:**

Input: r = 5 Output: 32.476 Input: r = 8 Output: 83.1384

**Approach**: Let **r** be the radius of the semicircle, **x** be the lower edge of the trapezoid, and **y** the upper edge, & **h** be the height of the trapezoid.

Now from the figure,

r^2 = h^2 + (y/2)^2

or, 4r^2 = 4h^2 + y^2

y^2 = 4r^2 – 4h^2

y = 2âˆš(r^2 – h^2)

We know, Area of Trapezoid, A = (x + y)*h/2

So, A = hr + hâˆš(r^2 – h^2)

taking the derivative of this area function with respect to h, (noting that r is a constant since we are given the semicircle of radius r to start with)

dA/dh = r + âˆš(r^2 – h^2) – h^2/âˆš(r^2 – h^2)

To find the critical points we set the derivative equal to zero and solve for h, we get

h = âˆš3/2 * r

So, x = 2 * r & y = r

So,A = (3 * âˆš3 * r^2)/4

**Below is the implementation of above approach**:

## C++

`// C++ Program to find the biggest trapezoid` `// which can be inscribed within the semicircle` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the area` `// of the biggest trapezoid` `float` `trapezoidarea(` `float` `r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < 0)` ` ` `return` `-1;` ` ` `// area of the trapezoid` ` ` `float` `a = (3 * ` `sqrt` `(3) * ` `pow` `(r, 2)) / 4;` ` ` `return` `a;` `}` `// Driver code` `int` `main()` `{` ` ` `float` `r = 5;` ` ` `cout << trapezoidarea(r) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java Program to find the biggest trapezoid` `// which can be inscribed within the semicircle` `import` `java.util.*;` `import` `java.lang.*;` `import` `java.io.*;` `class` `GFG{` `// Function to find the area` `// of the biggest trapezoid` `static` `float` `trapezoidarea(` `float` `r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < ` `0` `)` ` ` `return` `-` `1` `;` ` ` `// area of the trapezoid` ` ` `float` `a = (` `3` `* (` `float` `)Math.sqrt(` `3` `)` ` ` `* (` `float` `)Math.pow(r, ` `2` `)) / ` `4` `;` ` ` `return` `a;` `}` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `float` `r = ` `5` `;` ` ` `System.out.printf(` `"%.3f"` `,trapezoidarea(r));` `}` `}` |

## Python 3

`# Python 3 Program to find the biggest trapezoid` `# which can be inscribed within the semicircle` `# from math import everything` `from` `math ` `import` `*` `# Function to find the area` `# of the biggest trapezoid` `def` `trapezoidarea(r) :` ` ` `# the radius cannot be negative` ` ` `if` `r < ` `0` `:` ` ` `return` `-` `1` ` ` `# area of the trapezoid` ` ` `a ` `=` `(` `3` `*` `sqrt(` `3` `) ` `*` `pow` `(r,` `2` `)) ` `/` `4` ` ` `return` `a` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `r ` `=` `5` ` ` `print` `(` `round` `(trapezoidarea(r),` `3` `))` `# This code is contributed by ANKITRAI1` |

## C#

`// C# Program to find the biggest` `// trapezoid which can be inscribed` `// within the semicircle` `using` `System;` `class` `GFG` `{` `// Function to find the area` `// of the biggest trapezoid` `static` `float` `trapezoidarea(` `float` `r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < 0)` ` ` `return` `-1;` ` ` `// area of the trapezoid` ` ` `float` `a = (3 * (` `float` `)Math.Sqrt(3) *` ` ` `(` `float` `)Math.Pow(r, 2)) / 4;` ` ` `return` `a;` `}` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `float` `r = 5;` ` ` `Console.WriteLine(` `""` `+ trapezoidarea(r));` `}` `}` `// This code is contributed` `// by inder_verma` |

## PHP

`<?php` `// PHP Program to find the biggest` `// trapezoid which can be inscribed` `// within the semicircle` `// Function to find the area` `// of the biggest trapezoid` `function` `trapezoidarea(` `$r` `)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(` `$r` `< 0)` ` ` `return` `-1;` ` ` `// area of the trapezoid` ` ` `$a` `= (3 * sqrt(3) * pow(` `$r` `, 2)) / 4;` ` ` `return` `$a` `;` `}` `// Driver code` `$r` `= 5;` `echo` `trapezoidarea(` `$r` `).` `"\n"` `;` `// This code is contributed` `// by ChitraNayal` `?>` |

## Javascript

`<script>` `// javascript Program to find the biggest trapezoid` `// which can be inscribed within the semicircle` `// Function to find the area` `// of the biggest trapezoid` `function` `trapezoidarea(r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < 0)` ` ` `return` `-1;` ` ` `// area of the trapezoid` ` ` `var` `a = (3 * Math.sqrt(3)` ` ` `* Math.pow(r, 2)) / 4;` ` ` `return` `a;` `}` `// Driver code` `var` `r = 5;` `document.write(trapezoidarea(r).toFixed(3));` `// This code contributed by Princi Singh` `</script>` |

**Output:**

32.476

**Time complexity: **O(1)

**Auxiliary space: **O(1)