/*
放苹果分为两种情况,一种是有盘子为空,一种是每个盘子上都有苹果。
令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数。
1.假设有一个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m,n-1)即可
2.假设所有盘子都装有苹果,则每个盘子上至少有一个苹果,即最多剩下m-n个苹果,问题转化为将m-n个苹果放到n个盘子上即求(m-n,n)
*/
#include<iostream>
using namespace std;
int getNum(int m, int n){
if(m < 0) return 0;
if(m == 0 || m == 1) return 1;
if(n == 1) return 1;
return getNum(m - n, n) + getNum(m, n - 1);
}
int main(){
int m, n;
while(cin >> m >> n){
int ans = getNum(m, n);
cout << ans << endl;
}
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main(){
int m, n;
while(cin >> m >> n){
vector<vector<int>>record(m+1,vector<int>(n+1,0));
for(int i=0;i<=n;i++)
{
record[0][i]=1;
record[1][i]=1;
}
for(int i=0;i<=m;i++)
{
record[i][1]=1;
}
for(int j=2;j<=n;j++)
{
for(int i=2;i<=m;i++)
record[i][j]=(i-j<0?0:record[i-j][j])+record[i][j-1];
}
cout << record[m][n] << endl;
}
return 0;
}