1、很容易想到是递推。。。注意k要放在最外层。
2、刚开始忘记取余了,WA了一次。
#include<cstdio>
#include<cstring>using namespace std;
int f[110][110];
int main(){
int n,k;
memset(f,0,sizeof(f));
for(int i=0;i<=100;i++)
f[i][1]=1;
for(int k=1;k<=100;k++)
for(int i=0;i<=100;i++)
for(int j=0;j<=i;j++)
f[i][k]=(f[i][k]+f[i-j][k-1])%1000000;
while(scanf("%d%d",&n,&k)==2){
if(n==0&&k==0) break;
printf("%d\n",f[n][k]);
}
return 0;
}