题目描述
对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
例如,66 边形:
输入格式
输入只有一行一个整数 nn,代表边数。
输出格式
输出一行一个整数代表答案。
输入输出样例
输入 #1复制
3
输出 #1复制
0
输入 #2复制
6
输出 #2复制
15
说明/提示
数据规模与约定
- 对于 50 \%50% 的数据,保证 3 \leq n \leq 1003≤n≤100。
- 对于 100 \%100% 的数据,保证 3 \leq n \leq 10^53≤n≤105。
其实对于这道题目用c语言解决也有些疑问,我的代码在洛谷上运行并没有拿到满分,发布这一题的答案的同时,其实也想问一下有没有其他能拿到满分的方法
本人数学不好,直接上凸多边形交点公式
也就是n*(n-1)/2*(n-2)/3*(n-3)/4
代码如下
#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int main() {
long long int n = 0;
scanf("%lld", &n);
if (n <= 3) {
printf("0");
}
else
printf("%lld\n", n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4);
return 0;
}
这里是使用了长长整形,不然洛谷给出的分数是50分。
%lld对应的是long long int
欢迎各位大佬在下方评论,我会及时查看与调整