您的位置:首页 > Web前端

poj 1031 Fence 计算几何

2012-02-25 18:20 218 查看
物理题+数学题+信息学题
#include<iostream>
#include<cmath>
using namespace std;
#define MAXN 101
#define PI 3.1415926
struct point
{
double x,y;
};
point a[MAXN];
double h,k;
double Max=0,Min=0,sum=0;
int n;
double angle(point A,point B)
{
double k1=atan2(A.y,A.x);
double k2=atan2(B.y,B.x);
if(k2-k1>PI) k1+=2*PI;
if(k1-k2>PI) k2+=2*PI;
return k2-k1;
}
int main()
{
int i;
scanf("%lf%lf%d",&k,&h,&n);
for(i=0;i<n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
a
.x=a[0].x; a
.y=a[0].y;
for(i=0;i<n;i++)
{
sum+=angle(a[i],a[i+1]);
if(sum<Min) Min=sum;
if(sum>Max) Max=sum;
if(Max-Min>=2*PI)
{
Max=Min+2*PI;
break;
}
}
printf("%.2f\n",(Max-Min)*k*h);
return 0;
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: