Sum of sides of largest and smallest child polygons possible from a given polygon
Last Updated :
07 Apr, 2021
Given an integer A representing the external angle (in degrees) of a regular convex polygon, the task is to find the sum of the sides of the largest and smallest secondary polygons formed such that each edge of the secondary polygon is a chord of the primary polygon. If it is not possible to form such polygons, then print "-1".
Examples:
Input: A = 45
Output: 7
Explanation:
The primary polygon is an Octagon of 8 sides.
Therefore, the smallest secondary polygon consists of 3 edges and the largest secondary polygon consists of 4 edges.
Sum of edges of the smallest secondary polygon + Edges of the largest secondary polygon = 3 + 4 = 7.
Input: A = 60
Output: 6
Explanation: The primary polygon is a Hexagon consisting of 6 sides. Therefore, the smallest secondary polygon consists of 3 edges and the largest secondary polygon consists of 3 edges.
Approach: The idea is to first find the number of edges in the primary polygon and then, check whether it is possible to make secondary polygons or not. Follow the steps below to solve the problem:
- The sum of the external angle in a regular polygon is 360 degrees. Therefore, the number of sides = 360 / external angle.
- The number of sides of the maximum secondary polygon is the number of sides of the primary polygon / 2.
- As polygon is possible if the count of edges is at least 3, a secondary polygon is possible if the edges of the initial polygon ? 6.
- The smallest possible polygon has 3 edges always.
- Print the sum of number of sides in both the largest and smallest polygons.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
// Function to find the sum of largest and
// smallest secondary polygons if possible
void secondary_polygon(int Angle)
{
// Count edges of primary polygon
int edges_primary = 360/Angle;
if (edges_primary >= 6)
{
// Calculate edges present in
// the largest secondary polygon
int edges_max_secondary = edges_primary / 2;
cout << edges_max_secondary + 3;
}
else
cout << "Not Possible";
}
// Driver Code
int main()
{
// Given Exterior Angle
int Angle = 45;
secondary_polygon(Angle);
return 0;
}
// This code is contributed by mohit kumar 29.
Java
// Java program for the above approach
import java.io.*;
import java.util.*;
class GFG
{
// Function to find the sum of largest and
// smallest secondary polygons if possible
static void secondary_polygon(int Angle)
{
// Count edges of primary polygon
int edges_primary = 360/Angle;
if (edges_primary >= 6)
{
// Calculate edges present in
// the largest secondary polygon
int edges_max_secondary = edges_primary / 2;
System.out.println(edges_max_secondary + 3);
}
else
System.out.println("Not Possible");
}
// Driver Code
public static void main(String[] args)
{
// Given Exterior Angle
int Angle = 45;
secondary_polygon(Angle);
}
}
// This code is contributed by code_hunt.
Python3
# Python3 program for the above approach:
# Function to find the sum of largest and
# smallest secondary polygons if possible
def secondary_polygon(Angle):
# Count edges of primary polygon
edges_primary = 360//Angle
if edges_primary >= 6:
# Calculate edges present in
# the largest secondary polygon
edges_max_secondary = edges_primary // 2
return edges_max_secondary + 3
else:
return "Not Possible"
# Driver Code
if __name__ == '__main__':
# Given Exterior Angle
Angle = 45
print(secondary_polygon(Angle))
C#
// C# program for the above approach
using System;
class GFG {
// Function to find the sum of largest and
// smallest secondary polygons if possible
static void secondary_polygon(int Angle)
{
// Count edges of primary polygon
int edges_primary = 360 / Angle;
if (edges_primary >= 6) {
// Calculate edges present in
// the largest secondary polygon
int edges_max_secondary = edges_primary / 2;
Console.WriteLine(edges_max_secondary + 3);
}
else
Console.WriteLine("Not Possible");
}
// Driver Code
public static void Main(string[] args)
{
// Given Exterior Angle
int Angle = 45;
secondary_polygon(Angle);
}
}
// This code is contributed by ukasp.
JavaScript
<script>
// JavaScript program for the above approach
// Function to find the sum of largest and
// smallest secondary polygons if possible
function secondary_polygon(Angle)
{
// Count edges of primary polygon
var edges_primary = 360/Angle;
if (edges_primary >= 6)
{
// Calculate edges present in
// the largest secondary polygon
var edges_max_secondary = edges_primary / 2;
document.write(edges_max_secondary + 3);
}
else
document.write("Not Possible");
}
// Driver Code
//Given Exterior Angle
var Angle = 45;
secondary_polygon(Angle);
// This code is contributed by 29AjayKumar
</script>
Time Complexity: O(1)
Auxiliary Space: O(1)
Similar Reads
Check if an N-sided Polygon is possible from N given angles Given an array arr[] of N elements, where each element represents an angle(in degrees) of a polygon, the task is to check whether it is possible to make an N-sided polygon with all the given angles or not. If it is possible then print Yes else print No. Examples: Input: N = 3, arr[] = {60, 60, 60}Ou
4 min read
Check if it is possible to create a polygon with given n sides Given an array arr[] that contains the lengths of n sides that may or may not form a polygon. The task is to determine whether it is possible to form a polygon with all the given sides. Print Yes if possible else print No.Examples: Input: arr[] = {2, 3, 4} Output: YesInput: arr[] = {3, 4, 9, 2} Outp
5 min read
Area of the largest rectangle possible from given coordinates Given two arrays arr1[] and arr2[] of N denoting N coordinates of the form (arr1[i], 0) and M positive integers denotingM coordinates of the form (arr2[j], 1) where 1 ? i ? N and 1? j ? M. The task is to find the area of the largest rectangle that can be formed using these coordinates. Print 0 if no
8 min read
Number of sides of Polygon when maximum possible number of diagonals is given Given a number K which is the maximum possible number of diagonals in any polygon, the task is to find the number of sides of that polygon. Examples: Input: 2Output: 4Explanation: A quadrilateral has 2 diagonals at max. Input: 6Output: -1Explanation: No polygon has at most 6 diagonals. Approach: Thi
6 min read
Ratio of area of two nested polygons formed by connecting midpoints of sides of a regular N-sided polygon 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 = 3Output: 4.000000Explanation: Nested Triangle Ratio of the length of the sides fo
4 min read
Maximize area of triangle formed by points on sides of given rectangle Given a rectangle [(x1, y1), (x2, y2)] denoting the coordinates of bottom-left corner and top-right corner whose sides are parallel to coordinates axes and N points on its perimeter (at least one on each side). The task is to maximize the area of a triangle formed by these points. Examples: Input: r
9 min read