#P13866. [panasonic2020]Fractal Shortest Path

[panasonic2020]Fractal Shortest Path

题目描述

对于非负整数 KK,定义如下的 KK 级分形图案。

  • 00 级分形是仅包含一个白色格子的网格。
  • K>0K > 0 时,KK 级分形是一个 3K×3K3^K \times 3^K 的网格。将该网格划分为 993K1×3K13^{K-1} \times 3^{K-1} 的子块时,
    • 中央的子块全部为黑色格子。
    • 其余 88 个子块均为 K1K-1 级分形。

例如,22 级分形如下图所示。

3030 级分形中,将从上往下第 rr 行,从左往右第 cc 列的格子记作 (r,c)(r, c)

给定 QQ 组整数 (ai,bi,ci,di)(a_i, b_i, c_i, d_i),对于每组,求从 (ai,bi)(a_i, b_i)(ci,di)(c_i, d_i) 的距离。

这里,从 (a,b)(a, b)(c,d)(c, d) 的距离定义为满足以下条件的最小 nn

  • 存在一条仅经过白色格子的路径 (x0,y0),,(xn,yn)(x_0, y_0), \ldots, (x_n, y_n),满足:
    • (x0,y0)=(a,b)(x_0, y_0) = (a, b)
    • (xn,yn)=(c,d)(x_n, y_n) = (c, d)
    • 对于任意 ii0in10 \leq i \leq n-1),格子 (xi,yi)(x_i, y_i)(xi+1,yi+1)(x_{i+1}, y_{i+1}) 边相邻。

输入格式

输入从标准输入读入,格式如下:

QQ
a1 b1 c1 d1a_1\ b_1\ c_1\ d_1
\vdots
aQ bQ cQ dQa_Q\ b_Q\ c_Q\ d_Q

输出格式

输出共 QQ 行。第 ii 行输出从 (ai,bi)(a_i, b_i)(ci,di)(c_i, d_i) 的距离。

输入输出样例 #1

输入 #1

2
4 2 7 4
9 9 1 9

输出 #1

5
8

说明/提示

数据范围

  • 1Q100001 \leq Q \leq 10000
  • 1ai,bi,ci,di3301 \leq a_i, b_i, c_i, d_i \leq 3^{30}
  • (ai,bi)(ci,di)(a_i, b_i) \neq (c_i, d_i)
  • (ai,bi)(a_i, b_i)(ci,di)(c_i, d_i) 均为白色格子
  • 输入均为整数

样例解释 1