Dili_iiii

编码全要靠底力

[几何]三角形的内点

在一个平面坐标系中,我们可以选出三个不全在一条线上的点构成一个三角形。我们称一个在三角形内(不包含三角形的边上),横纵坐标皆为整数的点位这个三角形的内点。 对于一个由(0,0)、(n,m)、(p,0)作为顶点构成的三角形,请你设计程序求出他的内点数。

输入包括一行,包括三个用空格分隔的整数,分别为n,m,p(0 ≤ n < 32000,0 < m < 32000,0 < p < 32000)。

输出仅一个数,为这个三角形的内点的个数。

样例输入

7 5 10

样例输出

20

皮克定理:2s=2a+b-2
s:三角形面积
a:三角形内部的点的数目
b:三角形边界上的点的数目

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=1e9+7;
int n,m,p;
int gcd(int a,int b)
{
    if(b==0)
        return a;
    return gcd(b,a%b);
}
int main()
{
    scanf("%d %d %d",&n,&m,&p);
    int s=m*p/2;
    int sum=s+1-(p+gcd(n,m)+gcd(abs(n-p),m))/2;
    printf("%d\n",sum);
    return 0;
}

 

 
posted @ 2018-09-30 11:40  Dili_iiii  阅读(729)  评论(0编辑  收藏  举报