UVA11300计算几何:正n边形内的最长的线

 1 /*UVA11300
 2 平面几何:
 3 正n边形内的最长的线是哪条?
 4 归纳推理:
 5 举例n=3,4,5,6;n为偶数,因为正对的两个点在分割的圆上,所以最长
 6                n为奇数,做顶点到对边的垂线,定点到相对点的连线,因为构成直角三角形,所以斜边大于直角边,得证对顶点连线最长
 7 假设最长边长为2*x,则
 8 S(n,x)=n*0.5*x*x*sin(2Pi/n);偶数
 9 S(n,x) =n*0.5*r*r*sin(2pi/n);奇数
10 r=x/(sin((int)n/2/n*2*pi))
11 ps:想到最长边这个思路很关键
12 */
13 #include<iostream>
14 #include<stdio.h>
15 #include<string.h>
16 #include<algorithm>
17 #include<stdlib.h>
18 #include<cmath>
19 #include<queue>
20 #include<vector>
21 #include<map>
22 #define LL long long
23 
24 using namespace std;
25 
26 int x,y,x2,y2,n;
27 
28 void solve(double x)
29 {
30     if (n%2==0)
31     cout<<n*0.5*x*x*sin(2*M_PI/n)<<endl;
32     else
33     {
34         double r=x/(sin((n/2+0.0)/n*2*M_PI/2));
35         cout<<n*0.5*r*r*sin(2*M_PI/n)<<endl;
36     }
37 }
38 int main()
39 {
40     while(cin>>x>>y>>x2>>y2>>n)
41     {
42         if(n==0) break;
43         double r=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2))/2;
44         solve(r);
45     }
46     return 0;
47 }

 

posted @ 2014-02-26 20:58  little_w  阅读(197)  评论(0)    收藏  举报