(组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)

/*
 * POJ_2249.cpp
 *
 *  Created on: 2013年10月8日
 *      Author: Administrator
 */


#include <iostream>
#include <cstdio>

using namespace std;

typedef long long int64;

int64 work(int64 n , int64 k){
	if(k > n/2){
		k = n-k;
	}

	int64 a = 1;
	int64 b = 1;
	int i;
	for(i = 1 ; i <= k ; ++i){
		a *= n-i+1;
		b *= i;
		if(a%b == 0){
			a /= b;
			b = 1;
		}
	}

	return a/b;
}

int main(){
	int64 n,k;
	while(scanf("%lld%lld",&n,&k)!=EOF,n){
		printf("%lld
",work(n,k));
	}

	return 0;
}


原文地址:https://www.cnblogs.com/james1207/p/3358176.html