It was decided in IT City to distinguish successes of local IT companies by awards in the form of stars covered with gold from one side. To order the stars it is necessary to estimate order cost that depends on the area of gold-plating. Write a program that can calculate the area of a star.
A "star" figure having n ≥ 5 corners where n is a prime number is constructed the following way. On the circle of radius r n points are selected so that the distances between the adjacent ones are equal. Then every point is connected by a segment with two maximally distant points. All areas bounded by the segments parts are the figure parts.
![](https://i-blog.csdnimg.cn/blog_migrate/88c4229702a2c49c6343582c1f350070.png)
The only line of the input contains two integers n (5 ≤ n < 109, n is prime) and r (1 ≤ r ≤ 109) — the number of the star corners and the radius of the circumcircle correspondingly.
Output one number — the star area. The relative error of your answer should not be greater than 10 - 7.
7 10
108.395919545675
题意:求圆内正多角形的面积,给出n变形,圆的半径r,输出多角形面积
题解:如图
每个顶点与圆心连接,分成两个全等三角形,三角形最长的边为r,角1大小为π/(2*n),角2的大小为π/n,则角3的大小为π-角1-角2;根据正弦定理a/sin角a=b/sin角b 可求出另一条边,然后根据面积公式1/2*a*b*sin角可求出三角形面积s,最后s*2*n即为所求
code
#include<cstdio> #include<cmath> #define P acos(-1.0) int main() { double n,r; while(~scanf("%lf%lf",&n,&r)) { double x1,x2,x3; x1=P/(2.0*n);x2=2*x1;x3=P-x1-x2; double len=r*sin(x2)/sin(x3); double s=0.5*len*r*sin(x1)*2*n; printf("%.8lf\n",s); } return 0; }