UVa 10943 - How do you add?

来源:互联网 发布:linux 运行nodejs 编辑:程序博客网 时间:2024/06/02 11:30

很简单的计数问题,推出状态转移方程即可。

用d(i,j)表示i拆成j个数和的种类数

d(i,j)=d(i-1,j)+d(i,j-1)

边界:d(i,1)=1


#include <stdio.h>#include <string.h>#define mod 1000000int main(){    int p[110][110],n,k;    memset(p,0,sizeof(p));    for(int i=0;i<=100;i++)    {        p[i][1]=1;        for(int j=2;j<=100;j++)        {            p[i][j]=(p[i-1][j]%mod+p[i][j-1]%mod)%mod;        }    }    while(scanf("%d%d",&n,&k)==2)    {        if(!n&&!k)break;        printf("%d\n",p[n][k]);    }    return 0;}