【普及】二进制中1的个数
给定整数 n 和 m ,计算和
$$\displaystyle \sum_{k=0}^{n} \rm{popcount} (k \mathbin{\&} m) \bmod 998244353$$
这里, & 表示位操作 AND 。
什么是 & 运算?
- 0&0=0
- 0&1=0
- 1&0=0
- 1&1=1
- 也就是只有 2 个
1 结果才是 1,否则结果为 0
什么是 popcount
popcount (x) 表示 x 的二进制表示中 1 的个数,比如:
- 13=1101(2) ,所以是 popcount (13)=3 。
输入格式
输入一行包含 2 个正整数 n,m(0≤n,m≤260−1)
请注意 n,m 的数据范围!!
输出格式
对于每组数据输出一行,包含答案
4 3
4
1152921504606846975 1152921504606846975
499791890
提示
【样例 1 解释】
- popcount(0&3)=0
- popcount(1&3)=1
- popcount(2&3)=1
- popcount(3&3)=2
- popcount(4&3)=0
- 答案为:0+1+1+2+0=4
- 请注意将最后的答案对
998244353 取模
【数据范围】
- 0≤n,m≤260−1
请思考后再点击查看提示
来源