类似于数字三角形那个题,可以用动态规划的法子来做。就是杨辉三角求组合数的递推公式。
#include <iostream>
#include <cstring>
#include <algorithm>
const int mod = 1e9+7;
using namespace std;
long long c[2010][2010];
int main()
{
int n;cin>>n;
c[0][0]=1;
c[1][0]=c[1][1]=1;
for (int i = 2; i <= 2000; i ++ )
{
c[i][0]=1;
for(int j=1;j<=i;j++)
{
c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
}
while (n -- )
{
int a,b;
scanf("%d%d", &a,&b);
printf("%d\n",c[a][b]);
}
return 0;
}