CFCF2173D.Taiga's Carry Chains

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

奇迹不会降临到只是等待的人头上。

——《龙与虎!》

在大桥高中的放学后,龙儿给了大河一个正整数 nn,并设定了一个简单的挑战。

他们正好进行 kk 步操作。在每一步操作中,大河选择一个非负整数 \ell,然后将 nn 置为 nn+2n \gets n + 2^{\ell}

龙儿将每一步的得分定义为:在以二进制加法方式将 22^{\ell} 加到当前数时产生的进位的个数。总得分为 kk 步所有得分之和。

大河想让总得分尽可能大。kk 步之后,她最多能获得多少总得分?

输入格式

每组测试数据包含多个测试用例。第一行输入一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

接下来每个测试用例一行,包含两个整数 nnkk1n<2301 \le n < 2^{30}0k1090 \le k \le 10^9),表示初始整数和操作步数。

输出格式

对于每个测试用例,输出一个整数,表示大河能获得的最大总得分。

输入输出样例

  • 输入#1

    6
    7 1
    13 2
    42 2
    1048576 100
    23 2
    371 1

    输出#1

    3
    4
    3
    100
    5
    3

说明/提示

在第一个测试用例中,(n,k)=(7,1)(n,k)=(7,1)7=11127=\mathtt{111}_2。加上 202^0 后,111+1=1000\mathtt{111}+\mathtt{1}=\mathtt{1000},会在第 0,1,20,1,2 位产生进位。因此总得分为 33

在第二个测试用例中,(n,k)=(13,2)(n,k)=(13,2)13=1101213=\mathtt{1101}_2。第一次加 202^01101+0001=1110\mathtt{1101}+\mathtt{0001}=\mathtt{1110},只产生一次进位;再加 212^11110+0010=10000\mathtt{1110}+\mathtt{0010}=\mathtt{10000},在第 1,2,31,2,3 位连锁进位,两次操作共得到 1+3=41+3=4 分,所以结果为 44

在第三个测试用例中,(n,k)=(42,2)(n,k)=(42,2)42=101010242=\mathtt{101010}_2。第一次加 212^1101010+000010=101100\mathtt{101010}+\mathtt{000010}=\mathtt{101100},只产生一次进位;再加 222^2101100+000100=110000\mathtt{101100}+\mathtt{000100}=\mathtt{110000},在第 22 位和第 33 位产生进位,总共得到 1+2=31+2=3 分。

在第五个测试用例中,(n,k)=(23,2)(n,k)=(23,2)23=10111223=\mathtt{10111}_2。第一次加 202^010111+00001=11000\mathtt{10111}+\mathtt{00001}=\mathtt{11000},会在第 0,1,20,1,2 位产生进位;再加 232^311000+01000=100000\mathtt{11000}+\mathtt{01000}=\mathtt{100000},在第 3,43,4 位产生进位,所以总共有 3+2=53+2=5 次进位,结果为 55

首页