三角形内部的整点的个数模板(非原创)

题意:

给出三角形的三个角的坐标,求出此三角形内部整数的个数。

题解:

s=l/2+n-1;
s:三角形中包括边上整点的个数。
l:边上的整点;
n:三角形内部的点的个数。


 1 #include<cstdio>//s=l/2+n-1;
 2 #include<cmath>
 3 #include<cstdlib>
 4 int a,b,c,d,e,f;
 5 int area(){
 6     return abs((a*d+c*f+b*e-a*f-b*c-d*e)/2);
 7 }
 8 int gcd(int x,int y)
 9 {
10     if(y==0)return x;
11     else
12         return gcd(y,x%y);
13 }
14 int main ()
15 {
16     int t;scanf("%d",&t);
17     int k=0;
18     while(t--)
19     {
20         scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
21         int s=area();
22         int l1=gcd(abs(a-c),abs(b-d));
23         int l2=gcd(abs(a-e),abs(b-f));
24         int l3=gcd(abs(c-e),abs(d-f));
25         printf("CASE %d: %d\n",++k,s-(l1+l2+l3)/2+1);
26     }
27     return 0;
28 }
View Code

 

参考博客:http://blog.csdn.net/m___er/article/details/51676107

posted @ 2018-02-25 11:05  euzmin  阅读(903)  评论(0编辑  收藏  举报