倒水

提交数: 424, 通过率: 51.89%, 平均分: 61.82

题目描述:

一天,树树买了N个容量可以认为是无限大的瓶子,初始时每个瓶子里有1升水。树树发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子合并,把一个瓶子的水全部倒进另一个瓶,然后把空瓶丢弃(不能丢弃有水的瓶子)。

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

现在树树想知道,最少需要买多少新瓶子才能达到目标呢?

输入格式:

一行两个正整数N,K(1≤N≤109,K≤1000)。

输出格式:

一个非负整数,表示最少需要买多少新瓶子。

样例输入:

3 1

样例输出:

1

提示:

对于30%数据,N≤3*105

对于100%的数据如题目。

lowbit 的使用方法。

时间限制: 1000ms
空间限制: 128MB