C++求組合數代碼

long long C(int N, int M) {
	long long sum = 1;
	for(int i=1;i<=M; i++) {
		sum=sum*(N-M+i)/i;
        // sum *= (N-M+i)/i; 切忌這麼寫,會先計算(N-M+i)/i,而這個數可能是0
	}
	return sum;
}

這段代碼可以防止分子相乘之後越界的情況,有改進歡迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章