组合数计算(不爆 LL 时)

 参考:大数量级组合数的快速计算方法

ll C(int n,int m)
{
	if(m>n) return 0;
	double sum=0; // ln( C(n,m) )
	for(int i=m+1;i<=n;i++) sum+=log(i);
	for(int i=1;i<=n-m;i++) sum-=log(i);
	ll ans=(ll)(exp(sum)+0.5);
	return ans;
}

  

posted @ 2019-01-23 13:43  liuyongliu  阅读(241)  评论(0编辑  收藏  举报