//这道题目实质上是排列组合数学题,就是求C(n,m)的值,但是我学艺不精,超时了
//后来看了大牛的代码及思路,学习到组合数递推公式:C(n,m)=C(n-1,m)+C(n-1,m-1)
//然后在这里就可以用dp来做了
//不过我先用子函数的递归方法做,可惜超时了。
//这是递推公示的递归版本,超时!!!
#include<stdio.h>
int c(int n,int m)
{
if(n==1) return 1;
if(m==0||n==m) return 1;
else
return c(n-1,m)%1007+c(n-1,m-1)%1007;
}
int main()
{
int n,m,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
printf("%d\n",c(n,m)%1007);
}
return 0;
}
//所以说,只能把递推优化成dp来做,果然这才AC了
#include<stdio.h>
int c[2005][2005];
int main()
{
int n,m,t,i,j;
for(i=0;i<2005;i++)
c[i][0]=1;
for(i=1;i<2005;i++)
{
for(j=1;j<=i;j++)
{
c[i][j]=(c[i-1][j]%1007+c[i-1][j-1]%1007)%1007;
}
}
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
printf("%d\n",c[n][m]);
}
return 0;
}