import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int m = in.nextInt(); int n = in.nextInt(); if (m == 0) { System.out.print(1); return; } //int[i][j] 把i个苹果放在j个盘子上,且没有空余盘子的情况下有多少种方法,结果为i=n这一行的结果之和 int[][] b = new int[m + 1][n + 1]; //b[0][j] = 1; //b[i][j] = i==j ? 1 : i<j ? 0 : b[i-j][1] + b[i-j][2]...b[i-j][j] // b[1,1] = 1, b[2,1]=1 b[2,2]=1, b[3,1]=1, b[3,2]=1,b[3,3]=1 for (int i = 1; i <= m ; i++) { int w = Math.min(i, n); for (int j = 1; j <= w ; j++) { if (i == j) { b[i][j] = 1; } else { int c = Math.min(i - j, j); int max = 0; while (c > 0) { max += b[i - j][c]; c--; } b[i][j] = max; } } } int count = 0; while (n > 0) { count += b[m][n]; n--; } System.out.println(count); } }