原题链接
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;
}