标签:poj ace 表示 span return can name a+b mes
Pick定理万岁!!!
/* 2S=2a+b-2,其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。 这样 求出三角形面积 求出边上的点 内部的点就呼之欲出了! */ #include<cstdio> using namespace std; long long abs(long long x){return x>0?x:-x;} long long gcd(long long a,long long b) { return b==0?a:gcd(b,a%b); } int main() { int x1,y1,x2,y2,x3,y3; while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)) { if(!x1&&!x2&&!x3&&!y1&&!y2&&!y3) break; long long s2=(x1-x3)*(y2-y3)-(y1-y3)*(x2-x3); if(s2<0) s2=-s2; s2+=2; long long b=3; b+=gcd(abs(x1-x2),abs(y1-y2))-1; b+=gcd(abs(x1-x3),abs(y1-y3))-1; b+=gcd(abs(x3-x2),abs(y3-y2))-1; printf("%lld\n",(s2-b)>>1); } return 0; }
标签:poj ace 表示 span return can name a+b mes
原文地址:https://www.cnblogs.com/lxy8584099/p/10420828.html