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;
    }
    
  • 相关阅读:
    Jquery尺寸
    Jquery 位置
    c#编码规范
    手机即时通信文章列表
    缺陷跟踪系统BugTracker。 以下对使用
    用正则表达式来匹配图片标签
    mvc 分页
    Asp.Net MVC4网站中自定义AuthorizeAttribute
    asp.net mvc4 身份验证问题无法绕过内置的Membership/Role机制
    HDU4712Hamming Distance随机化算法
  • 原文地址:https://www.cnblogs.com/littlehb/p/15678326.html
Copyright © 2011-2022 走看看