第三篇题解

题目描述
对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

例如,6 边形:

输入格式
输入只有一行一个整数 nn,代表边数。

输出格式
输出一行一个整数代表答案。

输入输出样例
输入 3 输出 0
输入 6 输出 15

数据规模与约定

  • 对于 50% 的数据,保证3≤n≤100。
  • 对于100% 的数据,保证3≤n≤10^5。

个人理解:这题实际上有公式,但这雨我无瓜,我不知道这个公式,说到底还是因为菜。

所以我还是研究了一下公式解法

way1:

公式讲解 :首先我们知道两个对角线相交有且仅有一个交点,而四边形有且仅有两条对角线,也就是说两条对角线确定了四个顶点。因此!!!如果有n个顶点,需要选出4个顶点,这就涉及到了高中的排列组合,这道题是组合问题!因为选的顺序又不影响构成的对角线个数。然后,就套公式啦!

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

但是,我这样提交洛谷直接给我WA,哭唧唧

然后,在 我的不懈努力 借鉴大佬经验下,得出结论,爆掉了… long long 改成 unsigned long long 都不行… 把上面的公式改成

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

即可。大佬不愧是大佬(此处应该有掌声)

#include<stdio.h>
int main(){unsigned long long n,sum;scanf("%lld",&n);sum=n*(n-1)/2*(n-2)/3*(n-3)/4;//sum=n*(n-1)*(n-2)*(n-3)/24;printf("%lld\n",sum);return 0;
}

下面介绍一下不会公式法

way2:

推算“笨”方法:

顶点个数 交点个数
3 0
4 1
5 5
6 15
7 35
8 70
9 126

接下来就是小学奥数熟悉的找规律,相邻两个交点数做差,反复做差
最开始是,1,4,10,20,35,56…
然后,1,3,6,10,15,21…
接着,1,2,3,4,5,6…
这相邻俩交点的关系不久清晰了嘛

#include<stdio.h>
long long a1[100000];//题目中要求了数据规模10^5
long long a2[100000];//回顾了一下数组的知识!
long long a3[100000];//定义longlong是怕数据溢出!
int main()
{long long n,i;scanf("%lld",&n);for(int i=1;i<=n;i++){a1[i]=a1[i-1]+i;//这里生成1,3,6,10序列}for(int i=1;i<=n;i++){a2[i]=a2[i-1]+a1[i];//这里生成1,4,10,20序列}for(int i=1;i<=n;i++){a3[i]=a3[i-1]+a2[i];//这里生成答案序列:1,5,15,35}printf("%lld",a3[n-3]);//举个栗子:当n为6时,a3[6]实际对应的是n=9的值,所以一定注意减三!!!return 0;
}

over

这图看着就让人开心!

如有错误,欢迎指出!

洛谷P2181 对角线(c语言)相关推荐

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

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

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

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

  3. 洛谷P2181 对角线

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

  4. 洛谷 P2181 对角线

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

  5. 洛谷P2181——对角线

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

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

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

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

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

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

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

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

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

最新文章

  1. jdk8飞行记录器配置
  2. Nat. Mach. Intell. | 生物医学关系抽取的机器学习新框架
  3. python版本越高越好吗-python一般用什么版本
  4. Py之pyquery:pyquery的简介、安装、使用方法之详细攻略
  5. 国内最大.NET平台重金招募中 你竟然还不知道?
  6. JBoss模块很糟糕,无法在JBoss 7下使用自定义Resteasy / JAX-RS
  7. keep健身软件电脑版_电脑软件:优酷 (优化版)
  8. 保姆级计算机视觉学习路线
  9. svn ignore 的用法
  10. 苹果笔记本怎么安装python_MAC中怎么安装python
  11. varnish与squid比较
  12. .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。...
  13. mysql开启远程访问权限
  14. 2012智能管道技术创新与应用实践论…
  15. 20145304 第十周学习报告
  16. 不敢穷,不敢病,不敢死……我们是独生子女
  17. (CVPR2020 Oral)用于实时实例分割的Deep Snake方法
  18. 那智机器人调试步骤总结
  19. toolchain安装教程支持_【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法...
  20. ceph 源代码分析 — peering 过程

热门文章

  1. C语言 题目 1724: 后缀子串排序
  2. html怎么判断用户名重复,ajax验证注册用户名是否重复
  3. []*aa 和 *[]aa区别
  4. My piano dream.....
  5. ifstream.seekg、ifstream.tellg的用法
  6. 论测试人员如何控制情绪
  7. stddef.h一日游
  8. mapbox图形绘画以及polygon信息提取
  9. 30岁生日快乐图片_50岁生日快乐心理
  10. 磁共振t1t2信号记忆顺口溜_初学MRI记忆