luogu#P16810. [蓝桥杯 2026 国 Python A] 亮灭反转

[蓝桥杯 2026 国 Python A] 亮灭反转

题目描述

小蓝面前排列着 nn 盏灯,每盏灯起初要么是亮的,要么是灭的。因此,一共有 2n2^n 种不同的初始状态。

对于某种初始状态,小蓝会进行 n+1n + 1 次独立的观察,每次观察均直接从该初始状态出发(各次观察之间互不影响):

  • 00 次观察:不改变任何灯的状态,记录此时整排灯中亮灯的数量。
  • kk 次观察(1kn1 \le k \le n):在初始状态的基础上,先将前 kk 盏灯的状态进行反转(亮变灭、灭变亮),然后记录此时整排灯中亮灯的数量。

记这 n+1n + 1 次观察得到的亮灯数量依次为 b0,b1,,bnb_0, b_1, \ldots, b_n。如果在序列 b0,b1,,bnb_0, b_1, \ldots, b_n 中,不同元素的个数恰好为 mm,则称这个初始状态是美好的。

现在,请你帮助小蓝计算,一共有多少种美好的初始状态。由于答案可能很大,你只需要给出答案对 998244353998244353 取模后的结果即可。

输入格式

输入一行,包含两个整数 nnmm,中间用一个空格隔开。

输出格式

输出一个整数,表示合法初始状态的数量对 998244353998244353 取模后的结果。

3 2
2

提示

【样例说明】

n=3,m=2n = 3, m = 2 时,符合要求的合法初始状态共有 22 种,分别为“灭、亮、灭”和“亮、灭、亮”:

若初始状态为“灭、亮、灭”时,执行各次观察得到的亮灯数量序列 bb[1,2,1,2][1, 2, 1, 2]。其中不同元素有 1122,共 22 种。

若初始状态为“亮、灭、亮”时,执行各次观察得到的亮灯数量序列 bb[2,1,2,1][2, 1, 2, 1]。其中不同元素有 2211,共 22 种。

可以验证,只有这 22 种初始状态满足不同元素个数恰好为 22 的条件。

【评测用例规模与约定】

对于 30%30\% 的评测用例,1n201 \le n \le 20

对于 60%60\% 的评测用例,1n30001 \le n \le 3000, 1m451 \le m \le 45

对于所有评测用例,1n2×1051 \le n \le 2 \times 10^5, 1m451 \le m \le 45