U381272 小Y的组合数学

题目描述

组合数学是最让小Y最痛苦的一门学科! 正所谓有福同享,有难同当,小Y也想将这份痛苦和别人一起分享。于是,TA 出了这道题来考考你: 有一初始为 $x$ 的变量,每次操作可以选择将其自增 $1$ 或自减 $1$(但不能减为负值)。求进行 $k$ 次操作后,变量恰好等于 $0$ 的不同操作方法数。 记某种操作方法为 $[a_1, a_2, \cdots, a_t]$ ,其中,$a_i$ 表示第 $i$ 次的操作(自增 $1$ 或自减 $1$)。 $[a_1, a_2, \cdots, a_t]$ 和 $[a_1', a_2', \cdots, a_t']$ 两种操作方法不同,当且仅当 $\exist\ i \in [1, t], a_i \neq a_i'$。

输入格式

一行,两个整数 $x, k$ $(0 \leq x \leq 10^6, 1 \leq k \leq 10^6)$。

输出格式

一行,一个整数,表示进行 $k$ 次操作后,变量恰好等于 $0$ 的不同操作方法数。 由于答案可能很大,你只需要回答对 $998244353$ 取模后的结果即可。

说明/提示

样例 1 解释: $2$ 种操作方法分别为: $[$自增 $1, $自减 $1, $自增 $1, $自减 $1]$ $[$自增 $1, $自增 $1, $自减 $1, $自减 $1]$ 样例 2 解释: 可以证明,通过 $7$ 次操作一定无法使变量等于 $0$。 提示: 考虑一个质数 $P$ ,如果两个整数 $x$、$y$ 满足 $x \mod P = y \mod P$,那么就称 $x$、$y$ 在模 $P$ 意义下等价,记作 $x \equiv y \pmod P$。比如,$17 \equiv 3 \pmod 7$、$-1 \equiv 6 \pmod 7$。 可以证明,在模 $P$ 意义下,对于任意一个 $x \in [1, P - 1]$,都存在唯一一个 $y \in [1, P - 1]$,使得 $xy \equiv 1 \pmod{P}$。这个 $y$ 就是 $x$ 的逆元,记作 $x^{-1}$ 或者 $\dfrac{1}{x}$。比如,$2 \times 3 \equiv 6 \equiv 1 \pmod 5$,所以$\dfrac{1}{2} \equiv 3 \pmod 5$。 若正整数 $x, k \in [1, P - 1] $,显然有 $P + kx \equiv kx \pmod P$,等式两边同时乘以 $\dfrac{1}{x(P + kx)}$ 得 $\dfrac{1}{x} \equiv \dfrac{k}{P + kx} \pmod P$,$x > 1$ 时取 $k = -\lfloor \dfrac{P}{x} \rfloor$,得递推式 $\dfrac{1}{x} \equiv -\lfloor \dfrac{P}{x}\rfloor\dfrac{1}{P \mod x} \pmod P$。 可以直接使用以下程序实现求逆元以及模意义下的除法运算: ```c const int P = 998244353; int inv(int x) { if (x == 1) return 1; return 1LL * (P - P / x) * inv(P % x) % P; } int divide(int a, int b) { return 1LL * a * inv(b) % P; } int main() { int c = divide(5, 3); // 在模P的意义下等价于 c = 5 / 3,注意并不是向下取整 // do something ... return 0; } ```