UVa 10589 - Area

来源:互联网 发布:js 多时区夏令时切换 编辑:程序博客网 时间:2024/06/14 23:25

题目:给你n个点和一个正方形,问落在以正方形四个顶点为圆心、边长为半径的圆相交的面积,面积公式:a*a*M/N,其中M是落在相交区域中点的个数。

分析:简单题、计算几何。利用已知点到矩形死歌顶点的距离判断位置关系,统计即可。

#include <stdio.h>#include <stdlib.h>#include <math.h>typedef struct pnode{double x,y;pnode( double a, double b ){x = a;y = b;}pnode(){}}point;double dist( point a, point b ){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int in( point p, double a ){double d[4][2] = {0.0,0.0,1.0,0.0,0.0,1.0,1.0,1.0};for ( int i = 0 ; i < 4 ; ++ i ) {point q = point( a*d[i][0], a*d[i][1] );if ( dist( p, q ) > a ) return 0;}return 1;}int main(){int    n,a;point  p;while ( scanf("%d%d",&n,&a) && n ) {int count = 0;for ( int i = 0 ; i < n ; ++ i ) {scanf("%lf%lf",&p.x,&p.y);count += in( p, a+0.0 );}printf("%.5lf\n",1.0*count*a*a/n);}return 0;}