CF2020A.Find Minimum Operations

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Find Minimum Operations

题目描述

给定两个整数 nnkk

每次操作,你可以从 nn 中减去 kk 的任意次幂。具体来说,每次操作,你可以将 nn 替换为 nkxn - k^x,其中 xx 为任意非负整数。

请你求出将 nn 变为 00 所需的最少操作次数。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

接下来每组测试用例占一行,每行包含两个整数 nnkk1n,k1091 \le n, k \le 10^9)。

输出格式

对于每组测试用例,输出一个整数,表示将 nn 变为 00 所需的最少操作次数,每个答案占一行。

说明/提示

在第一个测试用例中,n=5n = 5k=2k = 2。我们可以按如下顺序进行操作:

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

可以证明,没有办法用少于 22 次操作将 nn 变为 00,因此答案为 22

在第二个测试用例中,n=3n = 3k=5k = 5。我们可以按如下顺序进行操作:

  1. 33 中减去 50=15^0 = 1,此时 nn 变为 31=23 - 1 = 2
  2. 22 中减去 50=15^0 = 1,此时 nn 变为 21=12 - 1 = 1
  3. 11 中减去 50=15^0 = 1,此时 nn 变为 11=01 - 1 = 0

可以证明,没有办法用少于 33 次操作将 nn 变为 00,因此答案为 33

由 ChatGPT 4.1 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验