#4353. X to Y

    ID: 4353 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>普及/提高-树结构最近公共祖先数学

X to Y

题目描述

给定整数 XXYY 和一个 22 以上的整数 KK

有一个变量 xx,初始时 x=Xx = X。你可以对 xx 执行任意多次(也可以 00 次)下面的操作:

  • 选择一个整数 yy,使其满足 xK=y\left\lfloor \dfrac{x}{K} \right\rfloor = y yK=x\left\lfloor \dfrac{y}{K} \right\rfloor = x,然后把 xx 的值替换成 yy

其中对实数 zzz\lfloor z \rfloor 表示不超过 zz 的最大整数(即向下取整)。

请求出把 xx 变成 YY 所需的最少操作次数。可以证明在本题约束下一定存在有限次操作的方案。

本题有 TT 组测试数据,请对每组分别求解。

输入格式

T
case_1
case_2
...
case_T

其中第 ii 组测试数据 casei\text{case}_i 的格式为:

X Y K

输出格式

依次输出每组测试数据的答案,每个答案占一行。

输入示例 1

4
11 9 3
0 0 2
842 180 7
1948706013487601 48019760148910476 89014537

输出示例 1

2
0
7
5

示例 1 说明

以第 11 组为例(X=11X = 11Y=9Y = 9K=3K = 3),可以用 22 步完成:

  • y=3y = 3。因为 $\left\lfloor \dfrac{x}{K} \right\rfloor = \left\lfloor \dfrac{11}{3} \right\rfloor = 3$,这一步合法,于是 xx 变成 33
  • y=9y = 9。因为 $\left\lfloor \dfrac{y}{K} \right\rfloor = \left\lfloor \dfrac{9}{3} \right\rfloor = 3 = x$,这一步合法,于是 xx 变成 99

可以证明少于 22 步做不到,所以答案是 22

22 组中 X=Y=0X = Y = 0,一步都不用做,答案是 00

44 组中 XXYYKK 都非常大,答案可能来自很深的层级,注意所有变量都要用 64 位整数

约束条件

  • 1T2×1051 \le T \le 2 \times 10^5
  • 0X,Y10180 \le X, Y \le 10^{18}
  • 2K10182 \le K \le 10^{18}
  • 所有输入值均为整数