计算组合数C(n,m),从n中选m个数,数论题目,思路为杨辉三角在组合数中的应用。
输入:若干组n和m,n=0表示输入结束
输出:若干组C(n,m)
#include<iostream>
using namespace std;
const int N = 2000 + 5;
const int MOD = (int)1e9 + 7;
int comb[N][N];//comb[n][m]就是C(n,m),n中选m个数
int main(){
for(int i = 0; i < N; i ++){
comb[i][0] = comb[i][i] = 1;
for(int j = 1; j < i; j ++){
comb[i][j] = comb[i-1][j] + comb[i-1][j-1];
comb[i][j] %= MOD;
}
}
int n,m;
while(cin>>n>>m){
if(!n) return 0;
cout<<comb[n][m]<<endl;
}
}