#ABC356D. 掩码汉明重量

掩码汉明重量

掩码汉明重量

题目描述

给定整数 NNMM,计算 k=0N\displaystyle \sum_{k=0}^{N} popcount\rm{popcount}(k&M)(k \mathbin{\&} M),并对 998244353998244353 取模。

这里,&\mathbin{\&} 表示按位与(bitwise AND)运算。

什么是按位与运算?

非负整数 aabb 的按位与运算结果 x=a&bx = a \mathbin{\&} b 定义如下:

xx 是满足以下条件的唯一非负整数:对于所有非负整数 kk

  • aa 的二进制表示中 2k2^k 位和 bb 的二进制表示中 2k2^k 位都为 11,则 xx 的二进制表示中 2k2^k 位为 11
  • 否则,xx 的二进制表示中 2k2^k 位为 00

例如,3=11(2)3=11_{(2)}5=101(2)5=101_{(2)},所以 3&5=13 \mathbin{\&} 5 = 1

什么是 popcount?

popcount\rm{popcount}(x)(x) 表示 xx 的二进制表示中 11 的个数。

例如,13=1101(2)13=1101_{(2)},所以 popcount\rm{popcount}(13)=3(13) = 3

输入格式

输入按以下格式从标准输入给出:

NN MM

输出格式

输出答案的整数。

样例

4 3
4

popcount\rm{popcount}(0&3)=0(0\mathbin{\&}3) = 0

popcount\rm{popcount}(1&3)=1(1\mathbin{\&}3) = 1

popcount\rm{popcount}(2&3)=1(2\mathbin{\&}3) = 1

popcount\rm{popcount}(3&3)=2(3\mathbin{\&}3) = 2

popcount\rm{popcount}(4&3)=0(4\mathbin{\&}3) = 0

这些值的和为 44

0 0
0

也可能有 N=0N = 0M=0M = 0 的情况。

1152921504606846975 1152921504606846975
499791890

注意结果需要对 998244353998244353 取模。

数据范围

  • 0N26010 \le N \le 2^{60} - 1
  • 0M26010 \le M \le 2^{60} - 1
难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
3315
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签