Given an array of binary integers, suppose these values are kept on the circumference of a circle at an equal distance. We need to tell whether is it possible to draw a regular polygon using only 1s as its vertices and if it is possible then print the maximum number of sides that regular polygon has.
Input : arr = [1, 1, 1, 0, 1, 0] Output : Polygon possible with side length 3 We can draw a regular triangle having 1s as its vertices as shown in below diagram (a). Input : arr = [1, 0, 1, 0, 1, 0, 1, 0, 1, 1] Output : Polygon possible with side length 5 We can draw a regular pentagon having 1s as its vertices as shown in below diagram (b).
We can solve this problem by getting a relation between the number of vertices a possible polygon can have and total number of values in the array. Let a possible regular polygon in circle has K vertices or K sides then it should satisfy two things to be the answer,
If given array size is N, then K should divide N otherwise K vertices can’t divide N vertices in an equally manner to be a regular polygon.
Next thing is there should be one at every vertex of chosen polygon.
After above points, we can see that for solving this problem we need to iterate over divisors of N and then check whether every value of the array at chosen divisor’s distance is 1 or not. If it is 1 then we found our solution. We can iterate over all divisors in O(sqrt(N)) time just by iterating over from 1 to sqrt(N). you can read more about that here.
Polygon possible with side length 5
This article is contributed by Utkarsh Trivedi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Side of a regular n-sided polygon circumscribed in a circle
- Area of largest Circle inscribe in N-sided Regular polygon
- How to discretize an Ellipse or Circle to a Polygon using C++ Graphics?
- Program to find the Circumcircle of any regular polygon
- Program to find the Perimeter of a Regular Polygon
- Program to find Area of Triangle inscribed in N-sided Regular Polygon
- Area of a n-sided regular polygon with given side length
- Area of a n-sided regular polygon with given Radius
- Length of Diagonal of a n-sided regular polygon
- Apothem of a n-sided regular polygon
- Central angle of a N sided Regular Polygon
- Check whether two convex regular polygon have same center or not
- Minimum side of square embedded in Regular polygon with N sides
- Find the angle of Rotational Symmetry of an N-sided regular polygon
- Area of a circle inscribed in a regular hexagon
- Count subarrays consisting of only 0's and only 1's in a binary array
- Program to calculate area of inner circle which passes through center of outer circle and touches its circumference
- Equation of circle when three points on the circle are given
- Check if a circle lies inside another circle or not
- Angle subtended by the chord to center of the circle when the angle subtended by the another equal chord of a congruent circle is given