# Number of occurrences of a given angle formed using 3 vertices of a n-sided regular polygon

Given an n-sided regular polygon and an angle θ, the task is to find number of occurrences of angle ( A_{i}, A_{j}, A_{k} ) = θ ( i < j < k) in a regular n-gon (regular polygon with n vertices) with vertices marked as A_{1}, A_{2}, …, A_{n}.

**Examples:**

Input:n = 4, ang = 90Output:4Input:n = 6, ang = 50Output:0

**Approach:**

- First we check whether such an angle can exist or not.
- Consider the vertices to be
**x**,**y**, and**z**and the angle to find be ∠ xyz. - The number of edges between
**x**and**y**be**a**and the number of edges between**y**and**z**be**b**. - Then
**∠ xyz = 180 – (180*(a+b)) / n**. - Thus
**∠ xyz * n (mod 180) = 0**. - Next we need to find the count of such angles.
- As the polygon is regular we just need to calculate the count of such an angle at one vertex and can directly multiply our result by n (the number of vertices).
- At each vertex the angle can be found at
**n-1-freq**times where**freq = (n*ang)/180**and depicts the number of edges remaining after creating the required angle i.e. the number of edges between z and x.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function that calculates occurrences ` `// of given angle that can be created ` `// using any 3 sides ` `int` `solve(` `int` `ang, ` `int` `n) ` `{ ` ` ` ` ` `// Maximum angle in a regular n-gon ` ` ` `// is equal to the interior angle ` ` ` `// If the given angle ` ` ` `// is greater than the interior angle ` ` ` `// then the given angle cannot be created ` ` ` `if` `((ang * n) > (180 * (n - 2))) { ` ` ` `return` `0; ` ` ` `} ` ` ` ` ` `// The given angle times n should be divisible ` ` ` `// by 180 else it cannot be created ` ` ` `else` `if` `((ang * n) % 180 != 0) { ` ` ` `return` `0; ` ` ` `} ` ` ` ` ` `// Initialise answer ` ` ` `int` `ans = 1; ` ` ` ` ` `// Calculate the frequency ` ` ` `// of given angle for each vertex ` ` ` `int` `freq = (ang * n) / 180; ` ` ` ` ` `// Multiply answer by frequency. ` ` ` `ans = ans * (n - 1 - freq); ` ` ` ` ` `// Multiply answer by the number of vertices. ` ` ` `ans = ans * n; ` ` ` ` ` `return` `ans; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `ang = 90, n = 4; ` ` ` ` ` `cout << solve(ang, n); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of the approach ` `class` `GFG ` `{ ` ` ` `// Function that calculates occurrences ` `// of given angle that can be created ` `// using any 3 sides ` `static` `int` `solve(` `int` `ang, ` `int` `n) ` `{ ` ` ` ` ` `// Maximum angle in a regular n-gon ` ` ` `// is equal to the interior angle ` ` ` `// If the given angle ` ` ` `// is greater than the interior angle ` ` ` `// then the given angle cannot be created ` ` ` `if` `((ang * n) > (` `180` `* (n - ` `2` `))) ` ` ` `{ ` ` ` `return` `0` `; ` ` ` `} ` ` ` ` ` `// The given angle times n should be divisible ` ` ` `// by 180 else it cannot be created ` ` ` `else` `if` `((ang * n) % ` `180` `!= ` `0` `) ` ` ` `{ ` ` ` `return` `0` `; ` ` ` `} ` ` ` ` ` `// Initialise answer ` ` ` `int` `ans = ` `1` `; ` ` ` ` ` `// Calculate the frequency ` ` ` `// of given angle for each vertex ` ` ` `int` `freq = (ang * n) / ` `180` `; ` ` ` ` ` `// Multiply answer by frequency. ` ` ` `ans = ans * (n - ` `1` `- freq); ` ` ` ` ` `// Multiply answer by the number of vertices. ` ` ` `ans = ans * n; ` ` ` ` ` `return` `ans; ` `} ` ` ` `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` ` ` `int` `ang = ` `90` `, n = ` `4` `; ` ` ` `System.out.println(solve(ang, n)); ` `} ` `} ` ` ` `// This code is contributed by Rajput-Ji ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of the approach ` ` ` `# Function that calculates occurrences ` `# of given angle that can be created ` `# using any 3 sides ` `def` `solve(ang, n): ` ` ` ` ` `# Maximum angle in a regular n-gon ` ` ` `# is equal to the interior angle ` ` ` `# If the given angle ` ` ` `# is greater than the interior angle ` ` ` `# then the given angle cannot be created ` ` ` `if` `((ang ` `*` `n) > (` `180` `*` `(n ` `-` `2` `))): ` ` ` `return` `0` ` ` ` ` `# The given angle times n should be divisible ` ` ` `# by 180 else it cannot be created ` ` ` `elif` `((ang ` `*` `n) ` `%` `180` `!` `=` `0` `): ` ` ` `return` `0` ` ` ` ` `# Initialise answer ` ` ` `ans ` `=` `1` ` ` ` ` `# Calculate the frequency ` ` ` `# of given angle for each vertex ` ` ` `freq ` `=` `(ang ` `*` `n) ` `/` `/` `180` ` ` ` ` `# Multiply answer by frequency. ` ` ` `ans ` `=` `ans ` `*` `(n ` `-` `1` `-` `freq) ` ` ` ` ` `# Multiply answer by the number of vertices. ` ` ` `ans ` `=` `ans ` `*` `n ` ` ` ` ` `return` `ans ` ` ` `# Driver code ` `ang ` `=` `90` `n ` `=` `4` ` ` `print` `(solve(ang, n)) ` ` ` `# This code is contributed by Mohit Kumar ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// Function that calculates occurrences ` `// of given angle that can be created ` `// using any 3 sides ` `static` `int` `solve(` `int` `ang, ` `int` `n) ` `{ ` ` ` ` ` `// Maximum angle in a regular n-gon ` ` ` `// is equal to the interior angle ` ` ` `// If the given angle ` ` ` `// is greater than the interior angle ` ` ` `// then the given angle cannot be created ` ` ` `if` `((ang * n) > (180 * (n - 2))) ` ` ` `{ ` ` ` `return` `0; ` ` ` `} ` ` ` ` ` `// The given angle times n should be divisible ` ` ` `// by 180 else it cannot be created ` ` ` `else` `if` `((ang * n) % 180 != 0) ` ` ` `{ ` ` ` `return` `0; ` ` ` `} ` ` ` ` ` `// Initialise answer ` ` ` `int` `ans = 1; ` ` ` ` ` `// Calculate the frequency ` ` ` `// of given angle for each vertex ` ` ` `int` `freq = (ang * n) / 180; ` ` ` ` ` `// Multiply answer by frequency. ` ` ` `ans = ans * (n - 1 - freq); ` ` ` ` ` `// Multiply answer by the ` ` ` `// number of vertices. ` ` ` `ans = ans * n; ` ` ` ` ` `return` `ans; ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main (String[] args) ` `{ ` ` ` `int` `ang = 90, n = 4; ` ` ` `Console.WriteLine(solve(ang, n)); ` `} ` `} ` ` ` `// This code is contributed by Princi Singh ` |

*chevron_right*

*filter_none*

**Output:**

4

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: **DSA Self Paced**. Become industry ready at a student-friendly price.

## Recommended Posts:

- Write a program to reverse digits of a number
- Write an Efficient Method to Check if a Number is Multiple of 3
- Write an Efficient C Program to Reverse Bits of a Number
- Minimum number of jumps to reach end
- Find minimum number to be divided to make a number a perfect square
- Find whether a given number is a power of 4 or not
- Print all combinations of points that can compose a given number
- Check if a number is multiple of 5 without using / and % operators
- Given a number, find the next smallest palindrome
- Count the number of possible triangles
- Select a random number from stream, with O(1) space
- Program to convert a given number to words
- Efficient program to print all prime factors of a given number
- Check if a number is Palindrome
- Random number generator in arbitrary probability distribution fashion
- How to check if a given point lies inside or outside a polygon?
- Count digits in given number N which divide N
- How to check if a given number is Fibonacci number?
- Program for nth Catalan Number
- Count trailing zeroes in factorial of a number

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.