poj2954

水题,先用叉积求三角形面积
然后求三边上的点(由公约数上点)a
然后用pick定理S=a+b/2-1
就可以求出内部的点数了

 1 var x,y,xx,yy,a1,a2,a3,x1,x2,x3,y1,y2,y3:longint;
 2     s,ans:double;
 3 
 4 function gcd(a,b:longint):longint;
 5   begin
 6     if b=0 then exit(a)
 7     else exit(gcd(b,a mod b));
 8   end;
 9 
10 begin
11   readln(x1,y1,x2,y2,x3,y3);
12   while not((x1=0) and (x2=0) and (x3=0) and (y1=0) and (y2=0) and (y3=0)) do
13   begin
14     x:=x2-x1;
15     y:=y2-y1;
16     xx:=x3-x1;
17     yy:=y3-y1;
18     s:=abs(x*yy-y*xx)/2;
19     a1:=gcd(abs(x1-x2),abs(y1-y2));
20     a2:=gcd(abs(x1-x3),abs(y1-y3));
21     a3:=gcd(abs(x2-x3),abs(y2-y3));
22     ans:=s+1-(a1+a2+a3)/2;
23     writeln(ans:0:0);
24     readln(x1,y1,x2,y2,x3,y3);
25   end;
26 end.
View Code
原文地址:https://www.cnblogs.com/phile/p/4473124.html