小苯的数字操作
题号:NC291321
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有一个正整数 n,他可以对 n 做不超过 k 轮操作,每轮操作从以下两种中任选一种进行:
\hspace{23pt}\bullet\,n 除以 2 并向下取整,即将 n 变为 \lfloor\tfrac{n}{2}\rfloor
\hspace{23pt}\bullet\,n 乘上 2,即将 n 变为 n \times 2
\hspace{15pt}他想知道,如果他重复取出一个新的 n 进行操作,每一次操作轮数不超过 k 轮(可以为 0 轮),那么操作过程中总共会产生多少个不同的数字,请你帮他数一数吧。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在单独的一行输入两个空格分割的正整数 n,k\left(1 \leqq n,k \leqq 10^9\right),表示小苯拥有的数字、以及他最多对 n 进行操作的轮数。

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。输出一个整数,表示操作过程中总共会产生多少个不同的数字。
示例1

输入

复制
2
6 3
114 514

输出

复制
8
2051

说明

\hspace{15pt}对于第一组测试数据,在所有的操作序列中,总共可以产生的数字有:0,1,2,3,6,12,24,48