三角形内部的整点的个数模板(非原创)
题意:
给出三角形的三个角的坐标,求出此三角形内部整数的个数。
题解:
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 }
参考博客:http://blog.csdn.net/m___er/article/details/51676107