求组合数(1)(排列组合) —— 范围较小
常用组合数的递推式:
解释: 有a个苹果,从中拿b个苹果; 我们先确定一个苹果a。 然后有两种情况: 一是不包括苹果a,从中拿b个苹果。 二是包含苹果a,再从中拿b-1个苹果。 如此递推。
#includeusing namespace std; const int N = 2010, mod = 1e9 + 7; int c[N][N]; int n; int main() { cin >> n; for(int i = 0; i < N; i++) for(int j = 0; j <= i; j++) if(!j) c[i][j] = 1; else c[i][j] = (c[i-1][j] + c[i-1][j-1]) % mod; while(n--) { int a, b; cin >> a >> b; cout << c[a][b] << endl; } return 0; }