1.计算公式:
组合数c++算法:
#include <iostream>
using namespace std;
int jc(int ,int ); //求f到e阶乘
int c(int, int); //求组合数
int main() {
int n, m; //定义n,m
cin >> n >> m;
cout << c(n, m); //输出n,m的组合数
return 0;
}
int jc(int f,int e) { //计算从f到e的阶乘
int sum_t = 1;
for (int i = e; i >= f; i--) { //阶乘次数
sum_t = sum_t * i; //阶乘
}
return sum_t; //返回阶乘的值
}
int c(int n, int m) {
return jc(m+1,n) / jc(1,n - m); //组合数公式,返回组合数的值
}
排列数A(N,M)c++算法:
#include <iostream>
using namespace std;
int jc(int ,int ); //求阶乘
int c(int, int); //求组合数
int a(int, int); //求排列数
int main() {
int n, m; //定义n,m
cin >> n >> m;
cout << c(n, m)<<endl; //输出n,m的组合数
cout << a(n, m); //输出n,m的排列数
return 0;
}
int jc(int f,int e) {
int sum_t = 1; //t的阶乘
for (int i = e; i >= f; i--) { //阶乘次数
sum_t = sum_t * i; //阶乘
}
return sum_t; //返回阶乘的值
}
int c(int n, int m) {
return jc(m+1,n) / jc(1,n - m); //组合数公式,返回组合数的值
}
int a(int n, int m) {
return jc(n-m+1, n); //组合数公式,返回组合数的值
}