求三角形内的点数
注意 The end-of-file is marked by a test case with x1 = y1 = x2 = y2 = x3 = y3 = 0 and should not be processed.
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int gcd(int x, int y)
{
if(!x || !y) return x != 0 ? x : y;
return gcd(y, x%y);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif // ONLINE_JUDGE
int x1, y1, x2, y2, x3, y3;
while(scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3) != EOF)
{
if(x1 == 0 && x2 == 0 && x3 ==0 && y1 == 0 && y2 == 0 && y3 == 0) break;
int sum = 0;
sum = (x2-x1)*(y3-y2) - (x3-x2)*(y2-y1);
int on = gcd(abs(x2-x1), abs(y2-y1)) + gcd(abs(x3-x2), abs(y3-y2)) + gcd(abs(x3-x1), abs(y3-y1));
sum = abs(sum);
int in = (sum-on)/2 + 1;
printf("%d\n", in);
}
}