读书人

poj 1265 ||poj2954 pick公式 格

发布时间: 2012-09-11 10:49:03 作者: rapoo

poj 1265 ||poj2954 pick公式 网格
/ :求一个多边形中在网格内点的个数,在边上的点的个数,多边形的面积
//poj2954:求三角形内整点个数 ,两题大同小异,

//利用pick公式:面积=内点+边上的点/2-1;

代码1:poj1265

#include<iostream>#include<cstdio>#include<math.h>int gcd(int a,int b){return b? gcd(b,a%b): a;}struct point {int x,y;};point p[3];int grid_onedge(int n,point *p){int i,ret=0;for(i=0;i<n;i++){ret+=gcd(abs(p[i].x-p[(i+1)%n].x),abs(p[i].y-p[(i+1)%n].y));}return ret;}int grid_inside(int n,point *p){int i,ret=0;for(i=0;i<n;i++){ret+=p[(i+1)%n].y*(p[i].x-p[(i+2)%n].x);}return  (abs(ret)-grid_onedge(n,p))/2+1;}int main(){while(scanf("%d%d%d%d%d%d",&p[0].x,&p[0].y,&p[1].x,&p[1].y,&p[2].x,&p[2].y),p[0].x||p[0].y||p[1].x||p[1].y||p[2].x||p[2].y){printf("%d\n",grid_inside(3,p));}return 0;}


读书人网 >编程

热点推荐