I 您所在的位置:网站首页 皮克定理例题 I

I

2024-07-12 06:00| 来源: 网络整理| 查看: 265

第一组图一,第二组图二题意:这里求三角形内的点的个数以及边AB、BC和AC边上的点的个数就要运用皮克定理(CLICK HERE) S=a + b/2 -1; (其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积)

1.给出三点(x1, y1) (x2, y2) (x3, y3)求三角形面积,利用叉乘公式 S = abs(((x2-x1) * (y3-y1) - (x3-x1) * (y2-y1)) / 2),abs为取绝对值2.给出两点(x1, y1) (x2, y2),求这两点组成得线段间整数坐标点得个数 b = gcd(abs(x1 - x2),abs(y1 - y2)),gcd为最大公约数

 

1 #include 2 #define ll long long 3 using namespace std; 4 5 int gcd(long long a,long long b) 6 { 7 return b==0?a:gcd(b,a%b); 8 } 9 10 struct node 11 { 12 long double x,y; 13 }; 14 int main() 15 { 16 node a,b,c; 17 while(cin>>a.x&&a.x!=-1) 18 { 19 cin>>a.y>>b.x>>b.y>>c.x>>c.y; 20 double S=abs((a.x*b.y-a.y*b.x+ b.x*c.y-b.y*c.x+c.x*a.y-c.y*a.x)/2); 21 ll l1=(gcd(abs(b.x-a.x),abs(b.y-a.y)))-1; 22 ll l2=(gcd(abs(c.x-b.x),abs(c.y-b.y)))-1; 23 ll l3=(gcd(abs(c.x-a.x),abs(c.y-a.y)))-1; 24 ll in=S+1-((l1+l2+l3+3))/2; 25 printf("%.1lf ",S); 26 cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有