洛谷P2181 对角线#组合数学

P2181 对角线

/**
组合数学 
每两个顶点连一条对角线
每两条对角线有一个顶点
所以每一个交点对应四个顶点
就是组合数c(n,4)
c(n,4) = n!/4!*(n-4)! = n*(n-1)*(n-2)*(n-3)/4!
答案可能会爆long long
所以可以把公式化成这样
n*(n-1)/2*(n-2)/3*(n-3)/4
因为n和n-1一定有一个是2的倍数,所以2可以除尽
同理n、n-1、n-2中一定有一个是3的倍数,所以3也可以除尽
同理4也可以除尽 
**/
ull n,ans;
/**
注意是unsigned long long
unsigned long long 的范围比long long要大一倍
它把long long 在负数范围的数放到了正数范围 
**/
int main()
{
	cin >> n;
	ans = n*(n-1)/2*(n-2)/3*(n-3)/4;
	printf("%lld\n",ans);
	return 0;
}
发布了42 篇原创文章 · 获赞 0 · 访问量 646

猜你喜欢

转载自blog.csdn.net/magic_wenge/article/details/105141899