G
这个问题不好直接做,考虑转化为一个好求的问题。
原问题等价于求最小的 \(x\) 使得(或判断无解):
\[\begin{aligned}
\frac{2}{9}(10 ^ x - 1) &\equiv 0 \pmod{k} \\
2(10 ^ x - 1) &\equiv 0 \pmod{9k} \\
10 ^ x &\equiv 1 \pmod{\frac{9k}{\gcd(k, 2)}}
\end{aligned}
\]
令 \(p = \frac{9k}{\gcd(k, 2)}\),当 \(\gcd(10, p) \ne 1\) 时原问题显然无解。
否则等价于求 \(10\) 在模 \(p\) 意义下的阶,一定有 \(ord_{p} 10 \mid \varphi(p)\),求出 \(\varphi(p)\) 后暴力枚举约数即可,复杂度 \(\mathcal{O}(T\sqrt{n} \log n)\)。
H
考虑如何判定一颗二叉树是合法的,有如下观察:
- 每个位置上为 \(1\) 的数(除了根)必须要向上移动。
因此原问题中的移动次数 \(n - 1\) 其实是这个移动问题最优情况的答案下界,考虑何时满足这种情况:
- 根节点上数字为 \(1\)。
- 若一个节点上为 \(1\) 那么它的 \(2\) 级祖先必有至少一个节点上为 \(1\)。
考虑 \(\rm dp\),令 \(f_i, g_i\) 分别表示 \(i\) 个点,根节点填的数字为 \(0/1\) 的合法方案,枚举左右子树大小转移:
\[f_i = \sum\limits_{j < i} (f_j + g_j) \times (f_{i - j - 1} + g_{i - j - 1})
\]
\[g_i = \sum\limits_{j \le i} f_j \times f_{i - j}
\]
边界我们考虑人为构造成 \(f_0 = 1, g_0 = 0\)。
注意到转移是卷积的形式,于是我们构造两个关于 \(f, g\) 的 \(\mathrm{OGF}:F(x), G(x)\),于是有:
\[\begin{aligned}
& \ \ \ \ \ \ \ \ \ F(x) = x(F(x) + G(x)) ^ 2 + 1, G(x) = F ^ 2(x) - 1 \\
&\Longleftrightarrow F(x) = x(F ^ 2(x) + F(x) - 1) ^ 2 + 1
\end{aligned}
\]
将两边展开后为四次方程,很难求根展开,考虑换一个方式求解通项公式。
注意到 \(x\) 出现仅出现一次且为一次式,不妨借助拉格朗日反演,考虑如此构造求出 \(F(x)\) 的复合逆 \(G(x)\):
\[\begin{aligned}
& \ \ \ \ \ \ \ \ G(F(x)) = x = \frac{F(x) - 1}{(F ^ 2(x) + F(x) - 1) ^ 2} \\
&\Longleftrightarrow G(x) = \frac{x - 1}{(x ^ 2 + x - 1) ^ 2}
\end{aligned}
\]
应用拉格朗日反演公式,有:
\[\begin{aligned}
[x ^ n]F(x) &= \frac{1}{n}[x ^ {n - 1}]\left(\frac{x}{G(x)}\right) ^ n \\
&= \frac{1}{n}[x ^ {n - 1}]\left(\frac{x(x ^ 2 + x - 1) ^ 2}{x - 1}\right) ^ n
\end{aligned}
\]
注意到后半部分分母部分不好处理,发现问题来源在于 \(G(x)\) 分子为 \(x - 1\) 与 \(\frac{x}{G(x)}\) 没有抵消,于是考虑换元:
\[H(x) = F(x) - 1 = x((H(x) + 1) ^ 2 + H(x)) ^ 2
\]
可以用同样的方法构造出 \(H(x)\) 的复合逆 \(G(x) = \frac{x}{((x + 1) ^ 2 + x) ^ 2} = \frac{x}{(x ^ 2 + 3x + 1) ^ 2}\),此时应用拉格朗日反演公式:
\[\begin{aligned}
[x ^ n]F(x) &= \frac{1}{n}[x ^ {n - 1}]\left(\frac{x}{G(x)}\right) ^ n \\
&= \frac{1}{n}[x ^ {n - 1}]\left(x ^ 2 + 3x + 1\right) ^ {2n} \\
&= \frac{1}{n} \sum\limits_i ^ {\lfloor \frac{n - 1}{2} \rfloor} \dbinom{2n}{i ~~~ n - 2i - 1 ~~~ n + i + 1}3 ^ {n - 2i - 1}\\
\end{aligned}
\]
直接计算即可,复杂度 \(\mathcal{O}(n)\)。