首先,一开始的提示给的帮助很大。
我们发现,假如需要造出一个三角形,需要6个点。那么题目就变成了在给定的点的个数中选取6个不同的点的个数。
(注意:顶点在圆上的,就是在那个圈上的不算)
为了更好地解决这个问题,我们来看几个例子。
首先我们定义N!=1*2*3*……*N。
再定义C(M,N)为从M个元素中无序取出N个的方法,P(M,N)为从M个元素中有序取出N个的方法。
这样的定义是什么意思呢?比如说从1,2,3,4共4个元素中中取出3个,有(1,2,3);(1,3,4);(2,3,4);(1,2,4)这样共4种,而这里是不考虑顺序的,所以C(4,3)=4,而如果对每一种方案考虑它的排列顺序的话,那结果将会不同,因为(1,2,3);(1,3,2);(2,1,3);(2,3,1);(3,1,2);(3,2,1)将被视为不同的方案,所以P(4,3)=6*4=24.
下面给出它们的计算公式:
P(M,N)=M!/(M-N)! C(M,N)=M!/((M-N)!*N!)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
long long a;
cin>>a;
cout<<a*(a-1)*(a-2)*(a-3)*(a-4)*(a-5)/720;
return 0;
}