洛谷P2181 对角线

对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

思路

如果从数学的角度上去思考这一问题, 一个交点必然只能有两条对角线确定,因为任何三条对角线都不会交于一点.
那么问题就是,我们能在一个n顶点凸多边形里面取到几条对角线呢?

显然, 两点确定一条直线, n个顶点里面我们只需要看能取多少组"4个顶点"即可解题. 由于三个顶点确定出来的两条对角线, 交点在顶点上, 显然这样是不可能的, 所以n个顶点取4个点有多少种情况, 需要借助数学排列组合的知识.

易得公式

n * (n-1) * (n-2) * (n-3) / 24

那么就可以写出一个很简单的程序了:

#include<bits/stdc++.h>
using namespace std;

unsigned long long n,ans;

int main() {
    scanf("%lld",&n);
    ans=n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4;
    printf("%lld\n",ans);
    return 0;
}
上一篇
下一篇