洛谷P2181 对角线(c语言)
第三篇题解
题目描述
对于一个 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语言)相关推荐
- 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)
题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...
- 洛谷P2181对角线题解(C语言)
题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数n,代表边数. 输出格式 输出一行一个整数代 ...
- 洛谷P2181 对角线
一般我们见到这种多边形可以认定为n边形,我们可以知道n边形的对角线是n(n-3)/2,因此我们可以推断中间交点的数量,如:四边形对角线交点为 1个:五边形对角线交点为5个:六边形对角线为15个等等所以 ...
- 洛谷 P2181 对角线
P2181 对角线 传送门 题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数. ...
- 洛谷P2181——对角线
P2181 对角线 原题传送 题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. ...
- 洛谷 P2181 对角线(C语言)
题目描述 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点.请求出图形中对角线交点的个数. 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数. 输出格式 输出一行一个整数 ...
- 洛谷 - P2181 - 对角线 - 打表 - 组合数学
https://www.luogu.org/problemnew/show/P2181 对于某条对角线,除去从两端出发的对角线,其他的都与它有1个交点. 每个点有(n-3)条对角线,每条对角线和其余C ...
- 洛谷 P2181对角线——排列组合
P2181看到的时候觉得思考难度极大,想要利用图论求解,但没有思路,最后从答案中明白,核心是排列组合,三条对角线不会交于一点,所以任何一点都必须由两条对角线组成--即四个点确定一个交点. 也就是问,顶 ...
- 洛谷P2181 对角线(组合数)
题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...
最新文章
- jdk8飞行记录器配置
- Nat. Mach. Intell. | 生物医学关系抽取的机器学习新框架
- python版本越高越好吗-python一般用什么版本
- Py之pyquery:pyquery的简介、安装、使用方法之详细攻略
- 国内最大.NET平台重金招募中 你竟然还不知道?
- JBoss模块很糟糕,无法在JBoss 7下使用自定义Resteasy / JAX-RS
- keep健身软件电脑版_电脑软件:优酷 (优化版)
- 保姆级计算机视觉学习路线
- svn ignore 的用法
- 苹果笔记本怎么安装python_MAC中怎么安装python
- varnish与squid比较
- .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。...
- mysql开启远程访问权限
- 2012智能管道技术创新与应用实践论…
- 20145304 第十周学习报告
- 不敢穷,不敢病,不敢死……我们是独生子女
- (CVPR2020 Oral)用于实时实例分割的Deep Snake方法
- 那智机器人调试步骤总结
- toolchain安装教程支持_【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法...
- ceph 源代码分析 — peering 过程
热门文章
- C语言 题目 1724: 后缀子串排序
- html怎么判断用户名重复,ajax验证注册用户名是否重复
- []*aa 和 *[]aa区别
- My piano dream.....
- ifstream.seekg、ifstream.tellg的用法
- 论测试人员如何控制情绪
- stddef.h一日游
- mapbox图形绘画以及polygon信息提取
- 30岁生日快乐图片_50岁生日快乐心理
- 磁共振t1t2信号记忆顺口溜_初学MRI记忆