输入非负整数m和n,输出组合数,其中。
在这里,我们使用公式来简化计算。
1 #include <cstdio> 2 3 using namespace std; 4 int combine(int n,int m){ //计算n中取m个组合数 5 int result=1; 6 if(m+m<n) //C_n^m=C_n^{n-m} 7 m=n-m; 8 for(int i=1,j=n-m+1;i<=m;i++,j++) 9 result=result*j/i; 10 return result; 11 } 12 int main(){ 13 int m,n; 14 scanf("%d%d",&m,&n); 15 printf("%d ", combine(n,m)); 16 return 0; 17 }