AT_abc300_h [ABC300Ex] Fibonacci: Revisited

题目描述

数列 $a_0,\ a_1,\ a_2,\ \dots$ 的通项 $a_n$ 定义如下: $$ a_n = \begin{cases} 1 & (0 \leq n < K) \\ \displaystyle{\sum_{i=1}^K} a_{n-i} & (K \leq n) \\ \end{cases} $$ 给定整数 $N$。请计算所有满足 $m\ \text{AND}\ N = m$ 的非负整数 $m$ 的 $a_m$ 之和,并对 $998244353$ 取模后输出。($\text{AND}$ 表示按位与运算) 按位与运算的定义如下:对于整数 $A,B$,$A\ \text{AND}\ B$ 的二进制表示中,第 $2^k$ 位($k \geq 0$)的数值为 $A,B$ 的二进制表示中第 $2^k$ 位都为 $1$ 时为 $1$,否则为 $0$。

输入格式

输入从标准输入读取,格式如下: > $K$ $N$

输出格式

请输出答案。

说明/提示

### 限制条件 - $1 \leq K \leq 5 \times 10^4$ - $0 \leq N \leq 10^{18}$ - $N, K$ 均为整数 ### 样例解释 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$。 由 ChatGPT 4.1 翻译