(组合数学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\n",work(n,k));

	}



	return 0;

}


你可能感兴趣的:(show)