CF2020A.Find Minimum Operations

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

Find Minimum Operations

题目描述

给定两个整数 nn 和 kk。

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

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

输入格式

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

接下来每组测试用例占一行,每行包含两个整数 nn 和 kk(1≤n,k≤1091 \le n, k \le 10^9)。

输出格式

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

说明/提示

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

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

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

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

  1. 从 33 中减去 50=15^0 = 1,此时 nn 变为 3−1=23 - 1 = 2。
  2. 从 22 中减去 50=15^0 = 1,此时 nn 变为 2−1=12 - 1 = 1。
  3. 从 11 中减去 50=15^0 = 1,此时 nn 变为 1−1=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

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