#P14224. [2026队测系列]星港远征计划之cresc

    ID: 13433 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 6 上传者: 标签>CF2100组合数学数学模运算数论动态规划

[2026队测系列]星港远征计划之cresc

题目背景

星港远征计划中,科研组正在研究一种分层增长谱。原始记录是一段长度为 N+1N+1 的能级序列 AA,其中每个值都在 00MM 之间。
系统只会保留相邻两项的和,从而生成一个长度为 NN 的观测序列 SS。为了符合实验要求,这个观测序列必须是非递减的。
现在你需要计算,究竟有多少种不同的观测序列 SS 可以由某个合法的原始序列 AA 产生。

题目描述

对于一个长度为 N+1N+1 的序列

A=(A1,A2,,AN+1),A=(A_1,A_2,\ldots,A_{N+1}),

我们按如下方式得到一个长度为 NN 的序列

S=(S1,S2,,SN)S=(S_1,S_2,\ldots,S_N):
  • 对每个 i (1iN)i \ (1 \le i \le N),定义Si=Ai+Ai+1.S_i=A_i+A_{i+1}.

请你求出满足以下全部条件的长度为 NN 的序列 SS 的个数,并对 109+710^9+7 取模:

  • SS非递减序列;
  • 存在一个长度为 N+1N+1 的序列 AA,其中每个元素都是 00MM 之间的整数(含端点),并且可以按上述方式得到该 SS

输入格式

输入从标准输入给出,格式如下:

N M

输出格式

输出一行一个整数,表示答案。

样例 #1

输入

2 1

输出

5

说明

可能的 AA 序列共有以下 88 种:

  • A=(0,0,0)A=(0,0,0),得到 S=(0,0)S=(0,0)
  • A=(0,0,1)A=(0,0,1),得到 S=(0,1)S=(0,1)
  • A=(0,1,0)A=(0,1,0),得到 S=(1,1)S=(1,1)
  • A=(0,1,1)A=(0,1,1),得到 S=(1,2)S=(1,2)
  • A=(1,0,0)A=(1,0,0),得到 S=(1,0)S=(1,0)
  • A=(1,0,1)A=(1,0,1),得到 S=(1,1)S=(1,1)
  • A=(1,1,0)A=(1,1,0),得到 S=(2,1)S=(2,1)
  • A=(1,1,1)A=(1,1,1),得到 S=(2,2)S=(2,2)

其中非递减的不同 SS 共有 55 种:

  • (0,0)(0,0)
  • (0,1)(0,1)
  • (1,1)(1,1)
  • (1,2)(1,2)
  • (2,2)(2,2)

样例 #2

输入

869121 10000000

输出

767557322

数据范围

  • 1N,M1071 \le N,M \le 10^7
  • 输入中的所有值均为整数