#ATabc356d. [ABC356D] Masked Popcount

[ABC356D] Masked Popcount

题目描述

给你 22 个整数 NNMM,请你求出 $\sum\limits\_{k=0}^N \operatorname{popcount}(k \operatorname{and}M)$ 对 998244353998244353 取模后的值。

其中,and\operatorname{and} 表示按位与运算popcount(x)\operatorname{popcount}(x) 表示 xx 的二进制表示中 11 的个数(比如 13=1101(2)13=1101_{(2)},所以 popcount(13)=3\operatorname{popcount}(13)=3)。

输入格式

输入一行两个整数 NNMM

输出格式

输出答案,结果对 998244353998244353 取模。

样例 1

输入

4 3

输出

4

样例 2

输入

0 0

输出

0

样例 3

输入

1152921504606846975 1152921504606846975

输出

499791890

说明/提示

数据范围

0N,M26010\le N,M\le 2^{60}-1

样例解释 1

  • popcount(0and3)=0\operatorname{popcount} (0\operatorname{and}3)=0
  • popcount(1and3)=1\operatorname{popcount} (1\operatorname{and}3)=1
  • popcount(2and3)=1\operatorname{popcount} (2\operatorname{and}3)=1
  • popcount(3and3)=2\operatorname{popcount} (3\operatorname{and}3)=2
  • popcount(4and3)=0\operatorname{popcount} (4\operatorname{and}3)=0

这些值的总和为 44

样例解释 2

可能出现 N=0N=0M=0M=0 的情况。

样例解释 3

请注意答案对 998244353998244353 取模。