poj2954三角形内整数点的个数

#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using std::swap;
int gcd ( int x, int y )
{
    int tmp;
    if ( x < y ) swap(x,y);
    while ( y ) { tmp = y; y = x % y; x = tmp; }
    return x;
}

int main()
{
    int x1, y1, x2, y2, x3, y3;
    while ( 1 )
    {
        scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
        if ( !x1 && !y1 && !x2 && !y2 && !x3 && !y3 ) break;
        double s =fabs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)+0.0) / 2.0;
        int dx1 = abs(x1-x2), dy1 = abs(y1-y2);
        int dx2 = abs(x2-x3), dy2 = abs(y2-y3);
        int dx3 = abs(x3-x1), dy3 = abs(y3-y1);
        int b = gcd ( dx1, dy1 ) + gcd ( dx2, dy2 ) + gcd(dx3,dy3);
        int i = (int)(s)- b / 2 + 1;
        printf("%d\n",i);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值