Given an N-sided polygon, the task is to find the ratio of the area of the Nth to (N + 1)th N-sided regular nested polygons generated by joining the midpoints of the sides of the original polygon.
Examples :
Input: N = 3
Output: 4.000000
Explanation:Ratio of the length of the sides formed by joining the mid-points of the triangle with the length of the side of the original triangle is 0.5. Hence, R = (Area of Nth triangle) / (Area of (N + 1)th triangle) = 4
Input: N = 4
Output: 2.000000
Approach: The problem can be solved based on the following observations:
- Consider an N-sided regular polygon as shown in the figure below.
- A = 2 * ? / N
B = ? / N
h = r * cos(B)
b = h * cos(B)
c = h((1 – cos(A)) / 2)1/2 - Area of the Black Isosceles Triangle:
- Area of the Red Isosceles Triangle:
- r = s / (2 * [1 – cos(2B)])1/2 and b = r * [cos(B)]2
- After combining the above equations:
- Final result obtained is as follows:
Below is the implementation of the above approach:
C++
// C++ code for the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate the ratio of // area of N-th and (N + 1)-th nested // polygons formed by connecting midpoints void AreaFactor( int n) { // Stores the value of PI double pi = 3.14159265; // Calculating area the factor double areaf = 1 / ( cos (pi / n) * cos (pi / n)); // Printing the ratio // precise upto 6 decimal places cout << fixed << setprecision(6) << areaf << endl; } // Driver Code int main() { int n = 4; AreaFactor(n); return 0; } |
Java
// Java program for the above approach import java.io.*; class GFG{ // Function to calculate the ratio of // area of N-th and (N + 1)-th nested // polygons formed by connecting midpoints static void AreaFactor( int n) { // Stores the value of PI double pi = 3.14159265 ; // Calculating area the factor double areaf = 1 / (Math.cos(pi / n) * Math.cos(pi / n)); // Printing the ratio // precise upto 6 decimal places System.out.format( "%.6f" , areaf); } // Driver Code public static void main(String[] args) { int n = 4 ; AreaFactor(n); } } // This code is contributed by code_hunt |
Python3
# Python3 code for the above approach import math # Function to calculate the ratio of # area of N-th and (N + 1)-th nested # polygons formed by connecting midpoints def AreaFactor(n): # Stores the value of PI pi = 3.14159265 # Calculating area the factor areaf = 1 / (math.cos(pi / n) * math.cos(pi / n)) # Printing the ratio # precise upto 6 decimal places print ( '%.6f' % areaf) # Driver Code if __name__ = = "__main__" : n = 4 AreaFactor(n) # This code is contributed by ukasp |
C#
// C# program for the above approach using System; using System.Collections.Generic; class GFG { // Function to calculate the ratio of // area of N-th and (N + 1)-th nested // polygons formed by connecting midpoints static void AreaFactor( int n) { // Stores the value of PI double pi = 3.14159265; // Calculating area the factor double areaf = 1 / (Math.Cos(pi / n) * Math.Cos(pi / n)); // Printing the ratio // precise upto 6 decimal places Console.WriteLine(Math.Round(areaf)); } // Driver Code public static void Main( string [] args) { int n = 4; AreaFactor(n); } } // This code is contributed by susmitakundugoaldanga. |
Javascript
<script> // Javascript program implementation // of the approach // Function to calculate the ratio of // area of N-th and (N + 1)-th nested // polygons formed by connecting midpoints function AreaFactor(n) { // Stores the value of PI let pi = 3.14159265; // Calculating area the factor let areaf = (1 / (Math.cos(pi / n) * Math.cos(pi / n))); // Printing the ratio // precise upto 6 decimal places document.write(areaf.toFixed(6)); } // Driver Code let n = 4; AreaFactor(n); // This code is contributed by splevel62. </script> |
2.000000
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!