P2181 对角线

原题传送

题目描述

对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点。请求楚图形中对角线交点的个数。

例如,6边形:

输入输出格式

输入格式:

第一行一个n,代表边数。

输出格式:

第一行输出交点数量

输入输出样例

输入样例#1:

3

输出样例#1:

0

输入样例#2:

6

输出样例#2:

15

说明

50%的测试数据 3≤N≤100;

100%的测试数据 3≤N≤100000.

思路:

思路来自:https://blog.csdn.net/apro1066/article/details/81224016

首先由于不会有三条对角线交于一点,所以过某一个交点有且只能有2条对角线。

而这两条对角线实质上是确定了4个顶点(也可以看做是一个四边形的两条对角线交于一点,求四边形的数量)。

因此我们只需要确定4个顶点就得到了这个唯一确定的交点。

因此我们只需要求这样4个顶点的搭配有多少个了

也就是从n个顶点中取4个出来(顶点先取后取没有关系,所以是无序):n (n-1) (n-2) * (n-3) / 4!

于是我们就得到了公式: n (n-1) (n-2) * (n-3) / 24

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

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

另外注意的是,数据很大(刚才也提到了)。已知点和边都不可能是负数,所以要用unsigned long long int。

代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{unsigned long long sum,n;scanf("%llu",&n);sum=n*(n-1)/2*(n-2)/3*(n-3)/4; //n个里面取4个点 //原公式:n(n-1)(n-2)(n-3)/24,n很大,连乘会爆unsigned ll ,printf("%llu\n",sum);
}
//题目:对于一个N个定点的凸多边形,他的任何三条对角线都不
//会交于一点。请求图形中对角线交点的个数。

洛谷P2181——对角线相关推荐

  1. 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

  2. 洛谷P2181 对角线

    一般我们见到这种多边形可以认定为n边形,我们可以知道n边形的对角线是n(n-3)/2,因此我们可以推断中间交点的数量,如:四边形对角线交点为 1个:五边形对角线交点为5个:六边形对角线为15个等等所以 ...

  3. 洛谷P2181 对角线(c语言)

    第三篇题解 题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数 nn,代表边数. 输出格式 输 ...

  4. 洛谷P2181对角线题解(C语言)

    题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数n,代表边数. 输出格式 输出一行一个整数代 ...

  5. 洛谷 P2181 对角线

    P2181 对角线 传送门 题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数. ...

  6. 洛谷 - P2181 - 对角线 - 打表 - 组合数学

    https://www.luogu.org/problemnew/show/P2181 对于某条对角线,除去从两端出发的对角线,其他的都与它有1个交点. 每个点有(n-3)条对角线,每条对角线和其余C ...

  7. 洛谷 P2181对角线——排列组合

    P2181看到的时候觉得思考难度极大,想要利用图论求解,但没有思路,最后从答案中明白,核心是排列组合,三条对角线不会交于一点,所以任何一点都必须由两条对角线组成--即四个点确定一个交点. 也就是问,顶 ...

  8. 洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

  9. 洛谷 P2181 对角线(C语言)

    题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数. 输出格式 输出一行一个整数 ...

最新文章

  1. 存储过程系列之存储过程具体操作过程及sql数据库调用
  2. CSS多行文本垂直居中
  3. 软件质量的理解 摘录
  4. 只需一条信息即可远程利用严重的思科 Jabber RCE缺陷
  5. 数仓系列 | Flink 窗口的应用与实现
  6. Windows 程序设计应用开发(上部)
  7. LCD1602液晶显示屏驱动文件
  8. 将idea maven项目中webapp文件夹的改为Web Root
  9. open drain和push pull
  10. 情人节程序员用HTML网页表白【在一起计时】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  11. 《架构师》被孟岩表扬,心里高兴
  12. 最好用的coreldraw2020中文版,安装好后不显示评估版,显示已注册
  13. VB-Word添加页眉页脚
  14. 无法斑驳的青春,折射出心里每一丝憧憬和每一缕不甘
  15. 聚划算今日团购_聚划算今日团购清…
  16. 大一大学计算机期末试卷,大一大学计算机基础教程期末考试题
  17. 07-ET框架的数据库连接
  18. 石墨加工机器keyword
  19. Inventor 二次开发 - Gear Up Inventor 分享 Inventor 二次开发 的资料和经验
  20. Problem of Windows Phone8.1 Jumpstart Demo

热门文章

  1. java(springboot) mybatis 数据权限详细实现(图文)
  2. Mysql 数据库常用函数总结
  3. 搭建Socks5代理服务器
  4. 股票模拟交易日志(八)
  5. linux 内核 ipv6 路由,Linux模拟IPV6双栈路由器实现方案
  6. OpenInventor实现三维模型的拖动
  7. 涂鸦智能Java实习面试经历
  8. 拓嘉启远电商:拼多多开店好做吗
  9. absolute 元素完全居中的两种方法
  10. DuplicateHandle用法