#4500. 数学小店的奇妙兑换 (drink.cpp)

数学小店的奇妙兑换 (drink.cpp)

题目描述

在学校的数学小店里,有一个有趣的活动:只要你拿出三个饮料瓶,就可以换一瓶新的饮料。今天,一个学生捡到了 10 个空饮料瓶,决定来参加这个活动。

他的兑换过程如下:

  1. 首先,他用 9 个饮料瓶换了 3 瓶新的饮料,然后喝掉了这些饮料。
  2. 接着,他手里剩下了 4 个饮料瓶,他拿出其中的 3 个换了一瓶饮料,这时他手里还剩下 2 个饮料瓶。
  3. 学生又问店主借了 1 瓶饮料,喝完后又多了 1 个饮料瓶。然后他拿着这 3 个饮料瓶换了一瓶饮料,还给了店主。

有借有还,再借不难。在这个过程中,学生总共喝了 5 瓶饮料。

现在假设有 nn 个饮料瓶,店里的活动是每 kk 个饮料瓶能换一瓶饮料,学生最多能喝几瓶饮料呢?

输入格式

输入包含两个正整数 n,k(1<kmin(n,109))n,k (1 < k \leq \min (n, 10^9)) 。含义如题面描述。

输出格式

输出一行一个整数表示答案。

样例输入 1

10 3

样例输出 1

5

样例输入 2

10 4

样例输出 2

3

数据范围与约定

  • 对于 30%30\% 的数据,N109N \leq 10^{9}
  • 对于 80%80\% 的数据,N1018N \leq 10^{18}
  • 对于全部数据,1N10100001 \leq N \leq 10^{10000}