Link :885. 求组合数 I - AcWing题库
ans:
公式 别问 模拟去就行了
简单理解:
。。。 。。。 。
C[3][7] 表示从7个句号里面选择三个
现在重新分成: 。||| 。。。 。。。
1、假设第一个必选 则现在变成 C[2][6] ( c[3-1][7-1] )
2、假设第一个不选 则 C[3][6]
1+2 即是最后的结果 因此 C[b][a]=C[b-1][a-1]+C[b][a-1]
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2e3+10;
const int mod=1e9+7;
int a[maxn][maxn];
void init(){
for(int i=0;i<=2000;i++){
for(int j=0;j<=i;j++){
if(j==0){
a[j][i]=1;
}else{
a[j][i] = (a[j-1][i-1]*1ll+a[j][i-1])%mod;
}
}
}
}
int main(){
init();
int n;cin>>n;
int a,b;
while(n--){
cin>>a>>b;
cout<<::a[b][a]<<endl;
}
}