#include<iostream>
using namespace std;
__int64 a[32]={0};
int main()
{
//freopen("in.txt","r",stdin);
int i,j,n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
//是否结束
if(n==0 && m==0)
break;
//m==0
if(n>1 && m==0)
printf("0\n");
//其他情况下
else
{
//初始化
for(i=0;i<=31;i++)
{
a[i]=0;
}
//到达1这个地方需要1步
a[1]=1;
//计算到n的步数
for(i=2;i<=n;i++)
{
//也就是说可以走一步或者是m以内的步。
for(j=1;j<=m;j++)
{
//如果说
if(i-j >0)
a[i]+=a[i-j];
}
}
printf("%I64d\n",a[n]);
}
}
return 0;
}
![](http://hi.csdn.net/attachment/201203/3/0_1330755689mM2a.gif)