题目链接:http://poj.org/problem?id=2954
继续刷水题恢复手感。
#include <cstdio>
#include <cmath>
int Gcd (int x,int y)
{
return !y?x:Gcd(y,x%y);
}
int main ()
{
int ax,ay,bx,by,cx,cy;
while (scanf("%d%d%d%d%d%d",&ax,&ay,&bx,&by,&cx,&cy)==6 && (ax||ay||bx||by||cx||cy))
{
double area=(bx-ax)*(cy-ay)-(cx-ax)*(by-ay);
area=fabs(area/=2.0); //叉乘求面积有可能为负
int on=Gcd(abs(bx-ax),abs(by-ay))+Gcd(abs(cx-ax),abs(cy-ay))+Gcd(abs(bx-cx),abs(by-cy));
int inside=area+1-on/2.0;
printf("%d\n",inside);
}
return 0;
}