CFCF2173D.Taiga's Carry Chains
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
奇迹不会降临到只是等待的人头上。
——《龙与虎!》
在大桥高中的放学后,龙儿给了大河一个正整数 n,并设定了一个简单的挑战。
他们正好进行 k 步操作。在每一步操作中,大河选择一个非负整数 ℓ,然后将 n 置为 n←n+2ℓ。
龙儿将每一步的得分定义为:在以二进制加法方式将 2ℓ 加到当前数时产生的进位的个数。总得分为 k 步所有得分之和。
大河想让总得分尽可能大。k 步之后,她最多能获得多少总得分?
输入格式
每组测试数据包含多个测试用例。第一行输入一个整数 t(1≤t≤1000),表示测试用例的数量。
接下来每个测试用例一行,包含两个整数 n 和 k(1≤n<230,0≤k≤109),表示初始整数和操作步数。
输出格式
对于每个测试用例,输出一个整数,表示大河能获得的最大总得分。
输入输出样例
输入#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),7=1112。加上 20 后,111+1=1000,会在第 0,1,2 位产生进位。因此总得分为 3。
在第二个测试用例中,(n,k)=(13,2),13=11012。第一次加 20:1101+0001=1110,只产生一次进位;再加 21:1110+0010=10000,在第 1,2,3 位连锁进位,两次操作共得到 1+3=4 分,所以结果为 4。
在第三个测试用例中,(n,k)=(42,2),42=1010102。第一次加 21:101010+000010=101100,只产生一次进位;再加 22:101100+000100=110000,在第 2 位和第 3 位产生进位,总共得到 1+2=3 分。
在第五个测试用例中,(n,k)=(23,2),23=101112。第一次加 20:10111+00001=11000,会在第 0,1,2 位产生进位;再加 23:11000+01000=100000,在第 3,4 位产生进位,所以总共有 3+2=5 次进位,结果为 5。