2021 年第二场蓝桥杯热身赛预计在 28 号举行,详见首页公告。

1119. 买水

最近学校又双叒叕停水了,所以 FS 打算去蓄水。

FS 在超市买了 N 个瓶子,每个瓶子的容量无限大。而且买来的瓶子刚开始都有 1 升水。后来 FS 发现瓶子实在太多了,于是他决定保留不超过 K 个瓶子。每次他会选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。(因为 FS 是个勤俭持家的好男人,所以不能丢弃有水的瓶子)

显然在某些情况下 FS 无法达到目标,比如 N=3,K=1。此时 FS 需要重新买一些新的瓶子(新瓶子同样容量无限,开始时有 1 升水),以到达目标。

FS 的数学实在是太差了,上个月才考了 110 分(满分 100+10),所以想让聪明的你来计算最少需要买多少新瓶子才能达到目标呢?

输入

第一行整数 T \ (1 \leq T \leq 100),代表有 T 组数据。

接下来的 T 行有两个数字 N,K \ (1 \leq N \leq 10^{10}, 1 \leq K \leq 100),代表 FS 刚开始买了 N 瓶水,最后要留下不超过 K 个瓶子。

输出

对于每一组数据:输出一行,一行里包括一个非负整数,表示最少需要买多少新瓶子。

样例

标准输入 复制文本
2
3 1
4 2
标准输出 复制文本
1
0

来源

2018 软件学院蓝桥杯热身赛 (For 18SEer only)

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 400
通过 102