纯粹的排列组合题目。从n个数中取出m个数,不考虑顺序,问有多少可能?典型的组合水题。
下面是代码:168K+0MS
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#define Min(a,b) (a)<(b)?(a):(b)
using namespace std;
int n,k;
int main(){
while(scanf("%d%d",&n,&k),n){
double result=1.0;
k=Min(k,n-k); //注意取小值,C(N,K)=C(N,N-K),该算法的时间复杂度为O(K)
while(k>0){
result*=(double(n)/double(k));
n--,k--;
}
printf("%d\n",(int)(result+0.5));
//cout << fixed << setprecision(0) << result << endl;
}
return 0;
}