1. 程式人生 > >N - Binomial Showdown (組合數學)

N - Binomial Showdown (組合數學)

rmi size iat 代碼 ble sample con The 思路

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;
 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 }

N - Binomial Showdown (組合數學)