解题思路
本题要求对于每个给定的 k,找到最小的页码 n,使得从第 1 页到第 n 页所有页码的十进制表示中,数字 0 出现的总次数 f(n)≥k。数据组数 t≤1000,k≤1013。
首先注意到 f(n) 是一个单调不减函数:页码越多,数字 0 出现的次数不会变少。因此我们可以采用二分答案的方法:确定一个足够大的上界 R,在 [1,R] 范围内二分查找第一个使 f(n)≥k 的位置。由于 k≤1013,而数字 0 的出现频率大约为十分之一,满足条件的 n 不会超过 1014 量级,实际可将上界设为 1015 或更大以保证安全。
二分过程中需要快速计算 f(n),即 1 到 n 之间所有整数包含的数字 0 的总个数(不含前导零)。这个问题可以使用**数位动态规划(数位 DP)**高效求解,复杂度与 n 的十进制位数相关,约为 O(log10n)。
具体计算 f(n) 的方法如下: