#B3919. 二进制与一

二进制与一

题目描述

给定一个正整数 nn,以及操作次数 qq。对于每次操作,给出一个正整数 kk,要求:让 nn 加上一个非负整数 xx,使得 nn 在二进制下的第 kk 位(从右往左数)是 11,并在符合要求的情况下,令 xx 最小。

请注意,每次操作都会让 nn 变为 n+xn+x,会影响后续操作。

小山需要求出,所有的 xx 之和是多少。

输入格式

输入共 q+1q+1 行。

第一行两个整数 nn 和 qq。

接下来 qq 行,每行一个正整数 kk,表示要让 nn 在二进制下从右往左数的第 kk 位是 11。

输出格式

一行一个整数,表示所有的 xx 之和。

样例 #1

样例输入 #1

5 3
2
3
4

样例输出 #1

3

提示

样例解释 #1

55 在二进制下是 101101。

  • 第一次操作:需要让 101101 的第二位变为 11,需让 101101 加上 11,变为 110110;
  • 第二次操作:需要让 110110 的第三位是 11,由于第三位本身就是 11,无需改变;
  • 第三次操作:需要让 110110 的第四位是 11,需加上 22,变为 10001000。

最终结果是 1+0+2=31+0+2=3。

数据规模与约定

对于 100%100\% 的数据,1≤n<2321\le n<2^{32},1≤q≤1051\le q\le 10^5,1≤k≤321\le k\le 32。

测试点编号 nn qq kk
11 ≤4\le 4 ≤10\le 10 ≤2\le 2
2,32,3 ≤32\le 32
4,54,5 ≤1024\le 1024 ≤1000\le 1000 ≤10\le 10
6,76,7 <232<2^{32} ≤10\le 10 ≤32\le 32
8∼108\sim 10 ≤105\le 10^5