zoukankan      html  css  js  c++  java
  • POJ 2954 Triangle

    POJ_2954

        这个题目的核心是Pick定理:对给定顶点坐标均是整点的简单多边形,其面积A和内部格点数目i、边上格点数目b满足:A=i+b/2-1。

        因此我们可以先求出三角形的面积以及边上的格点数,进而可以得到三角形内部的格点数。边上的格点数可以通过求|dx|和|dy|的最大公约数得到。

    #include<stdio.h>
    #include<string.h>
    int x1, y1, x2, y2, x3, y3;
    long long int ans, din, don;
    long long int det(int x1, int y1, int x2, int y2)
    {
    return (long long int)x1 * y2 - (long long int)x2 * y1;
    }
    int abs(int x)
    {
    return x < 0 ? -x : x;
    }
    int gcd(int x, int y)
    {
    return y == 0 ? x : gcd(y, x % y);
    }
    void solve()
    {
    don = gcd(abs(x2 - x1), abs(y2 - y1)) + gcd(abs(x3 - x2), abs(y3 - y2)) + gcd(abs(x1 - x3), abs(y1 - y3));
    ans = det(x2 - x1, y2 - y1, x3 - x1, y3 - y1);
    ans = ans < 0 ? -ans : ans;
    din = (ans - don) / 2 + 1;
    printf("%lld\n", din);
    }
    int main()
    {
    for(;;)
    {
    scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3);
    if(!x1 && !y1 && !x2 && !y2 && !x3 && !y3)
    break;
    solve();
    }
    return 0;
    }


  • 相关阅读:
    hbase 简介
    Hadoop本地库介绍
    MapReduce:详解Shuffle过程
    eucalyptus,openstack
    openstack installing...
    今年2011
    wget代理设置(转载)
    openstack running
    python 升级到2.6(转载)
    高德地图Windowphone API学习地图定位与地图模式的切换
  • 原文地址:https://www.cnblogs.com/staginner/p/2354067.html
Copyright © 2011-2022 走看看