题目还是比较简单的,有一个显然的做法就是枚举一下进制 $b$ ,然后判断合法的 $p$ 。
不难发现这样是很会超时的,然后我们考虑优化判断 $p$ 的过程,考虑优化:记录所有 “相邻数字不同” 的位置,计算这些位置的最大公约数 $g$。
然后对于 $g_1=gcd(g,L)$ 的所有大于 $1$ 的约数统计即可。
对于这一部分是 $O(\sum\log_bn)$,可以看作 $O(n\log n)$。
不难发现还是超时,考虑优化
上面的题目是核桃的入门组模拟 T4,考虑完全相同的技巧!
我们不难得到另一个思路,就是对于 $b \ge n^{\frac{1}{2}}$ 时候分类讨论,此时只有两位数,直接考虑分类讨论即可:
当进制 $b > \sqrt{n}$ 时,$n$ 的 $b$ 进制表示最多只有两位(因为 $b^2 > n$)。
两位的整齐表示只能是形如 $\overline{dd}_b = d(b + 1)$,且 $d < b$,所以 $b + 1$ 是 $n$ 的因子。
因此只需要枚举 $n$ 的所有因子 $k$,令 $b = k - 1$,并检查 $b > \sqrt{n}$ 且 $d = n/k < b$ 即可。
然后小 $b$ 部分直接暴力枚举到 $\sqrt{n}$,复杂度 $O(\sqrt{n}\log n)$,对于 $n \leq 10^{12}$ 和 $T$ 组数据总和 $n \leq 10^{12}$ 是可行的。
然后也可以像上面的题目一样考虑考虑 $b \ge n^{\frac{1}{3}}$ ,这个时候分讨的细节多了一些,但是还是可做的。
总体来说,A的idea还是比较简单的,虽然可能与我是个入门组选手,然后正好之前做过核桃入门组的 T4,然后学到了这个做法有关系吧。