凸多边形对角线交点问题

一道相关的洛谷题目

在这里插入图片描述
  看到题目的时候只有一个思路, 由之前的多边形和对角线加上一个点,构成现有的多边形,在这个基础上再连接其余各个顶点构成新的对角线。然后发现总结不了规律。

  于是查看题解,看懂了。具体思路是这样的,多边形中每一个顶点都是由两条唯一确定的(不会有三条线交于同一个点的情况),而每条对角线又是由两个顶点唯一确定的。所以一个点两条对角线就对应了四个顶点,也就是一个四边形。
  我们只要从这个多边形和其中的对角线中找出有多少个四边形就解决了。 公式就是简单的组合数公式。
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main() {
  unsigned long long n, l;
  cin >> n;
  l = n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4;
  cout << l;

  return 0;
}

值得注意的细节:

  1. 这道题的数据范围 要用usigned longlong
  2. 证明n * (n-1) * (n-2) * (n-3)可以被(2*3*4)整除。首先n和n-1一定有一个是2的倍数,因此2可以除尽,同理n,n-1,n-2中一定有一个是3的倍数,因此3可以除尽(除掉2只会消除因数2而对3没有影响)同理4也可以除尽 (来自洛谷题解学到了

思路来自洛谷题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值