机器人公司研发了一种新型的电池,用于为该公司的机器人提供电力。
每块电池出厂时,默认有 1 个单位的电量,但电池容量没有上限,可以充入任意单位的电量。用户如果买了多块电池,在无法直接充电的情况下,为了提升某块电池的电量,也可以将一块电池的电量导入到另一块电池中,合并两块电池的电量。
但该电池设计有一定的缺陷,如果要将一块电池的电量导入的另一块电池中,必须保证两块电池的电量相等。导入过程没有任何电量损耗。
小 A 购买了 N 块电池,每块电池都只有出厂时的 1 个单位的电量。他准备带机器人外出,机器人的电池舱容量有限,只能容纳 K 块电池。
小 A 定通过通过合并电池电量的方式,得到不超过 K 块有电的电池。
小 A 发现,在有些情况下,他无法实现这个目标。比如如果有 3 块刚出厂的电池,他想合并出 1 块有电的电池,这就无论如何也无法实现。
聪明的小 A 想到,他可以通过再购买一些电池的方法,来完美的解决这个问题。
请编程输出小 A 最少需要购买多少块刚出厂的电池,才能实现他的目标。
输入两个整数 N 和 K。
输出文件包含一个非负整数,表示最少需要购买的电池数量。
3 1
1
13 2
3
1024 1
0
N=3 K=1,再买 1 块电池,有 4 块电池。
先将前 2 个电池电量合并,得到 1 块电量为 2 的电池。
再将后 2 个电池电量合并,得到 1 块电量为 2 的电池。
最后将 2 个电量为 2 的电池合并,得到 1 块电量为 4 的电池。
100000 3
352
对于 10\% 的数据,满足 1 \le N \le 20,K=2。
对于 100\% 的数据,满足 1 \le N \le 10^9,1 \le K \le 1000。