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

2014-11-23 23:30:13 · 作者: · 浏览: 8
/* 
 * POJ_2249.cpp 
 * 
 *  Created on: 2013年10月8日 
 *      Author: Administrator 
 */  
  
  
#include   
#include   
  
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;  
}