【杭电】[1799]循环多少次?

这里写图片描述
这里写图片描述

刚开始没推导对
看题解说是组合数

纠结了一会没看出来怎么推的
然后通过杨辉三角及这个手动算的关系
发现满足 f(n,m)=f(n-1,m)+f(n-1,m-1)
所以也就是组合数

之后大数取余也可以轻松写了

#include<stdio.h>
int C[2020][2020];
int main() {
    C[0][0]=1;
    C[0][1]=0;
    for(int i=1; i<2010; i++) {
        for(int j=0; j<=i; j++) {
            if(j==0)
                C[i][j]=1;
            else
                C[i][j]=(C[i-1][j]+C[i-1][j-1])%1007;
        }
    }
    int T;
    scanf("%d",&T);
    while(T--) {
        int m,n;
        scanf("%d %d",&m,&n);
        printf("%d\n",C[n][m]);
    }
    return 0;
}

题目地址:【杭电】[1799]循环多少次?

posted @ 2016-04-14 18:59  BoilTask  阅读(8)  评论(0编辑  收藏  举报