0
点赞
收藏
分享

微信扫一扫

【洛谷】P2181 对角线

笙烛 2022-01-20 阅读 44
c++数学

原题链接

P2181 对角线

思路推导

一道组合数的题

因为不会有三条对角线交于一点
所以过某一个交点有且只有2条对角线

这两条对角线实质上是确定了4个顶点,也就是从n个顶点中取4个出来。
由于改变四个点的顺序不会改变对角线,所以除以4!,也就是24
于是我们就得到了公式: n * (n-1) * (n-2) * (n-3) / 24

为了防止爆掉,但又不想写高精,
我们可以采用一种化简的技巧
于是原式可以化为:
n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4

ac代码

#include<iostream>
using namespace std;
int main(){   
    unsigned long long n;
    cin >> n;
    unsigned long long ans = n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4;
    cout << ans;
    return 0;
}
举报

相关推荐

0 条评论