外观
答网友:求 [a, b] 间的回文数
依照数据范围,可以有 3 个优化等级。
注:这里我们将回文数的处理视为 O(logn)
枚举前半段,检查全回文数是否在 [a,b] 里面,O(nlogn)
注意到如果 a=1 的话可以二分查找最大的符合条件的前半段。奇数位和偶数位的最大符合前半段不同,所以找完奇数前半段数 ai 之后在在 [1,a1] 找 a2 即可。
当 a=1 时,只需要算出 [1,b] 内的回文数数量,然后减去 [1,a−1] 内的回文数即可。O(log2n).又注意到最大的符合条件的同奇偶前半段一定是 b 的前半段或其减 1,不同奇偶一定形如 99⋯9.
e.g. 1234: 分别为 1221 和 999.
于是用 O(logn) 判断最大的符合条件的前半段。和 2 一样,也是用 [1,b] 的答案减 [1,a−1] 的答案。