[ABC300Ex] Fibonacci: Revisited

题意翻译

给定正整数 $k$,定义线性递推数列: $$a_n = \begin{cases} 1 \ , \ (0 \leq n < k) \\ \displaystyle\sum_{i=1}^k a_{n-i} \ , \ (n \geq k)\end{cases}$$ 再给定 $n$,对所有「二进制下与 $n$ 的按位与运算后为自身」的自然数 $m$,求 $a_m$ 之和。 比如 $k=2$,$n=6$ 时满足条件的 $m$ 有 $0, 2,4,6$,可以计算出 $a_0 + a_2+a_4+a_6=21$。

题目描述

[problemUrl]: https://atcoder.jp/contests/abc300/tasks/abc300_h 数列 $ a_0,\ a_1,\ a_2,\ \dots $ の一般項 $ a_n $ を次のように定義します。 $ a_n\ =\ \begin{cases}\ 1\ &amp;\ (0\ \leq\ n\ \lt\ K)\ \\ \displaystyle{\sum_{i=1}^K}\ a_{n-i}\ &amp;\ (K\ \leq\ n)\ \\ \end{cases} $ 整数 $ N $ が与えられます。$ m\text{\ AND\ }N\ =\ m $ を満たす全ての非負整数 $ m $ に対する $ a_m $ の総和を $ 998244353 $ で割った余りを求めてください。($ \text{AND} $ はビット単位 AND) ビット単位 AND とは? 整数 $ A,B $ のビット単位 AND、$ A\text{\ AND\ }B $ は以下のように定義されます。 ・$ A\text{\ AND\ }B $ を二進表記した際の $ 2^k $ $ (k\ \geq\ 0) $ の位の数は、$ A,B $ を二進表記した際の $ 2^k $ の位の数のうち両方が $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ K $ $ N $

输出格式


答えを出力せよ。

输入输出样例

输入样例 #1

2 6

输出样例 #1

21

输入样例 #2

2 8

输出样例 #2

35

输入样例 #3

1 123456789

输出样例 #3

65536

输入样例 #4

300 20230429

输出样例 #4

125461938

输入样例 #5

42923 999999999558876113

输出样例 #5

300300300

说明

### 制約 - $ 1\ \leq\ K\ \leq\ 5\ \times\ 10^4 $ - $ 0\ \leq\ N\ \leq\ 10^{18} $ - $ N,\ K $ は整数 ### Sample Explanation 1 数列の各項を $ a_0 $ から順に並べると $ 1,\ 1,\ 2,\ 3,\ 5,\ 8,\ 13,\ 21,\ \dots $ になります。 $ 6\ \text{\ AND\ }\ m\ =\ m $ であるような非負整数は $ 0,\ 2,\ 4,\ 6 $ の 4 個なので、答えは $ 1\ +\ 2\ +\ 5\ +\ 13\ =\ 21 $ になります。