4450: 【例20-8】求解组合数

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:11 解决:5

题目描述

输入n和m(均不大于21),设计程序输出C(n,m)

排列组合公式如何计算?排列组合公式大全

输入

n和m

输出

C(n,m)

样例输入 复制

3 1

样例输出 复制

3

提示

可以直接使用自定义函数求解:

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long C[25][25];
long long fac(int n) { //求阶乘 
	long long f=1;
	for (int i=n;i>0;i--) {
		f*=i;
	}
	return f;
}
long long c(int n, int m) {
	return fac(n)/(fac(n-m) *fac(m));
}
int main(){
    cin>>n>>m;
    
    cout<<c(n,m);
    
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
int n,m;
long long C[25][25];
int main(){
    cin>>n>>m;
    for(int i=0;i<=21;i++) {
    	C[i][0]=C[i][i]=1;
    	for(int j=1;j<i;j++)
    	    C[i][j]=(C[i-1][j]+C[i-1][j-1]); //递推 
	}
	/*
	输出杨辉三角
	for(int i=0;i<=21;i++) {
		for(int j=0;j<=i;j++) {
			cout<<C[i][j]<<' ';
		}
		cout<<endl;
    }
    */
    cout<<C[n][m];
	return 0;
}