Binomial Showdown (组合数学)

Description

In how many ways can you choose k elements out of n elements, not taking order into account? 
Write a program to compute this number.

Input

The input will contain one or more test cases. 
Each test case consists of one line containing two integers n (n>=1) and k (0<=k<=n). 
Input is terminated by two zeroes for n and k.

Output

For each test case, print one line containing the required number. This number will always fit into an integer, i.e. it will be less than 2 31
Warning: Don't underestimate the problem. The result will fit into an integer - but if all intermediate results arising during the computation will also fit into an integer depends on your algorithm. The test cases will go to the limit. 

Sample Input

4 2
10 5
49 6
0 0

Sample Output

6
252
13983816
解题思路:简单求组合数,数据比较小,直接暴力枚举运算即可!
AC代码:
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int n,k;long long ans;//开long long,避免数据溢出
 5     while(cin>>n>>k&&(n+k)){
 6         if(n-k<k)k=n-k;
 7         ans=1;
 8         for(int i=1;i<=k;++i)ans=ans*(n-i+1)/i;
 9         cout<<ans<<endl;
10     }
11     return 0;
12 }

 

posted @ 2018-07-16 07:48  霜雪千年  阅读(353)  评论(0编辑  收藏  举报