import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int totalSteps = n + m;
        int min = Math.min(n, m);
        long result = 1;
        for (int i = 1; i <= min; i++) {
            result = result * (totalSteps - min + i) / i;
        }
        System.out.println(result);
    }
}

https://www.nowcoder.com/discuss/727521113110073344

思路:

  1. 读取输入:使用 Scanner 读取两个整数 n 和 m,分别代表行数和列数。
  2. 计算总步数:totalSteps 是 n + m,表示从起点到终点的总移动次数。
  3. 选择较小值:min 取 n 和 m 中的较小值,减少计算次数。
  4. 组合数计算:通过循环累乘和累除的方式计算组合数,避免中间结果溢出,确保每一步的结果都是整数。
  5. 输出结果:打印计算得到的路径数。