zoukankan      html  css  js  c++  java
  • P2181 对角线

    题目传送门

    \(n\)边形对角线个数 公式:\(n(n-3)/2\)

    \(n\)边形对角线交点个数公式 : \(C_n^4\)

    理由:
    首先由于不会有三条对角线交于一点,所以过某一个交点有且只能有\(2\)条对角线。
    而这两条对角线实质上是确定了\(4\)个顶点(也可以看做是一个四边形的两条对角线交于一点,求四边形的数量)。
    因此我们只需要确定\(4\)个顶点就得到了这个唯一确定的交点。因此我们只需要求这样\(4\)个顶点的搭配有多少个了,也就是从\(n\)个顶点中取\(4\)个出来。

    同时为了防止爆掉,但又不想写高精,我们可以采用一种化简的技巧,于是原式可以化为:

    \(n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4\)

    那为什么这样一定是对的呢?难道不会因为除不尽却向下取整而导致错误吗?

    事实上是一定除得尽的:

    首先\(n\)\(n-1\)一定有一个是\(2\)的倍数,因此\(2\)可以除尽,

    同理\(n,n-1,n-2\)中一定有一个是\(3\)的倍数,因此\(3\)可以除尽(除掉\(2\)只会消除因数\(2\)而对\(3\)没有影响),同理\(4\)也可以除尽。

    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long LL;
    LL n, ans;
    
    int main() {
        cin >> n;
        ans = n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4;
        printf("%lld\n", ans);
        return 0;
    }
    
  • 相关阅读:
    【BZOJ4448】【SCOI2015】情报传递
    【BZOJ2006】【NOI2010】超级钢琴
    NOIp2018模拟赛四十五~??
    【BZOJ4940】【YNOI2016】这是我自己的发明
    数据迁移—datax
    DG模拟GAP手动处理
    DG问题:ORA-16416: No viable Physical Standby switchover targets available
    管理和维护DG
    DG问题
    DG概念与机制
  • 原文地址:https://www.cnblogs.com/littlehb/p/15678326.html
Copyright © 2011-2022 走看看