#CF2020A. 求最少操作次数

求最少操作次数

A. 求最少操作次数

每个测试的时间限制:1 秒
内存限制:256 兆字节


题目描述

给你两个整数 nnkk

在一次操作中,你可以从 nn 中减去 kk 的任意次幂。形式化地说,在一次操作中,你可以将 nn 替换为 nkxn - k^x,其中 xx 为任意非负整数。

求使 nn 变为 00 所需的最少操作次数。


输入格式

每个测试点包含多个测试用例。第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例只有一行,包含两个整数 nnkk1n,k1091 \le n, k \le 10^9)。


输出格式

对于每个测试用例,在新的一行输出最少操作次数。


输入样例

6
5 2
3 5
16 4
100 3
6492 10
10 1

输出样例

2
3
1
4
21
10

样例解释

第一个测试用例n=5n = 5k=2k = 2。我们可以执行以下操作序列:

  1. 减去 20=12^0 = 1nn 变为 51=45 - 1 = 4
  2. 减去 22=42^2 = 4nn 变为 44=04 - 4 = 0

可以证明无法在少于 22 次操作内使 nn 变为 00,因此答案为 22

第二个测试用例n=3n = 3k=5k = 5。我们可以执行以下操作序列:

  1. 减去 50=15^0 = 1nn 变为 31=23 - 1 = 2
  2. 减去 50=15^0 = 1nn 变为 21=12 - 1 = 1
  3. 减去 50=15^0 = 1nn 变为 11=01 - 1 = 0

可以证明无法在少于 33 次操作内使 nn 变为 00,因此答案为 33