#P9897. [ICPC 2018 Qingdao R] Function and Function

[ICPC 2018 Qingdao R] Function and Function

Description

如果我们定义 f(0)=1f(0) = 1f(1)=0f(1) = 0f(4)=1f(4) = 1f(8)=2f(8) = 2f(16)=1f(16) = 1 …… 你知道函数 ff 意味着什么吗?

其实,f(x)f(x) 计算的是 xx 中每个数字所产生的封闭区域的总数。下表显示了每个数字产生的封闭区域数:

例如,f(1234)=0+0+0+1=1f(1234) = 0 + 0 + 0 + 1 = 1f(5678)=0+1+0+2=3f(5678) = 0 + 1 + 0 + 2 = 3

现在,我们用以下等式定义递归函数 gg

$$\begin{cases} g^0(x) = x \\ g^k(x) = f(g^{k-1}(x)) & \text{if } k \ge 1 \end{cases}$$

例如,g2(1234)=f(f(1234))=f(1)=0g^2(1234) = f(f(1234)) = f(1) = 0g2(5678)=f(f(5678))=f(3)=0g^2(5678) = f(f(5678)) = f(3) = 0

给定两个整数 xxkk,请计算 gk(x)g^k(x) 的值。

Input Format

有多个测试用例。输入的第一行包含一个整数 TT(大约 10510 ^ 5),表示测试用例的数量。 之后的每行包含两个整数 xxkk0x,k1090 \le x, k \le 10^9)。正整数不带前导零,零则正好是一个 "0"。

Output Format

对每个测试用例输出一行,其中包含一个整数,表示 gk(x)g^k(x) 的值。

6
123456789 1
888888888 1
888888888 2
888888888 999999999
98640 12345
1000000000 0
5
18
2
0
0
1000000000