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 Specification
The input file 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 Specification
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
这题很纠结,就是算C(k,n),第一次函数是这样写的sun=sun*(n-i)/i;结果RE……应该是因为乘的过程中大头除小头超了,而sun=sun*(n-m+i)/i;则是小头除小头。
code: #include <iostream>
using namespace std;
int main()
{
int n,m,i;
double sun;
while(scanf("%d%d",&n ,&m ) != EOF )
{
if(n==0&&m==0) break;
if(m>n/2) m=n-m;
sun=1;
for(i=1;i<=m;i++) sun=sun*(n-m+i)/i;
printf("%lld/n", (long long)sun );
}
return 0;
}