hdu 1799

#include<iostream>
using namespace std;
int arr[2003][2003];
void set(){   
    int i,j;
    arr[0][0]=1;
    for(i=1;i<=2000;i++)
    {
        arr[i][0]=1;
        for(j=1;j<=2000;j++)
        {
            arr[i][j]=(arr[i-1][j-1]+arr[i-1][j])%1007;
        }
    }   
}
int main()
{
    set();
    int t,m,n;
    while(cin>>t)
    {
        while(t-- && cin>>m>>n)
        {   
            cout<<arr[n][m]<<endl;           
        }
    }
    return 0;
} 

无话可说,重在公式推导C(m,n)

关于取余,针对每一项,由于是加法,取余可在打表时就解决,因为越到后面反而越大

可以说是DP,也可以说是数学公式 

打表好处:

1. 节约程序时间,后者可直接调用表中数据



posted @ 2013-09-27 10:40  海滨银枪小霸王  阅读(117)  评论(0编辑  收藏  举报