对于一个 nn 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
例如,66 边形:
输入格式
输入只有一行一个整数 nn,代表边数。
输出格式
输出一行一个整数代表答案。
NO.1
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long long n,b;//防止计算的结果数字可能溢出
scanf("%lld",&n);
b=n*(n-1)/2*(n-2)/3*(n-3)/4;//排列组合找出交点与边的关系
printf("%lld\n",b);
return 0;
}
NO.2 (这个方法有一定局限性,但看看思路也行)
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int a[100];
int b[100];
int c[100];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
a[i]=a[i-1]+i;
}
for(i=1;i<=n;i++){
b[i]=b[i-1]+a[i];
}
for(i=1;i<=n;i++){
c[i]=c[i-1]+b[i];
}
printf("%d",c[n-2]);
return 0;
}