#G. [语言月赛 202401] 二进制与一

    Type: RemoteJudge 1000ms 512MiB

[语言月赛 202401] 二进制与一

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

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

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

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

输入格式

输入共 q+1q + 1 行。

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

输出格式

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

5 3
2
3
4

3

提示

样例 1 说明

55 在二进制下是 101101

  • 对于第一次操作,需要让 101101 的第二位变为 11,则需让 101101 加上 11,变为 110110
  • 对于第二次操作,需要让 110110 的第三位是 11,由于 110110 的第三位本身就是一,所以无需改变;
  • 第三次操作同理,需要让 110110 加上 22

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

数据规模与约定

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

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

位运算

Not Claimed
Status
Done
Problem
12
Open Since
2024-11-23 0:00
Deadline
2024-12-1 23:59
Extension
24 hour(s)