D - Digit vs Square Root

原题链接

题解

首先是朴素解法,每次遍历 n 然后查看 每个数的平方根是否是其前缀

时间复杂度 O(Tnlogn)

这里有两个数,一个是 x,即一个整数,一个是 y,是 x 的平方根,因此我们可以换一个视角.

统计对于每一个整数 x,有多少 y[x2,(x+1)2) 满足 xy 的前缀

这样似乎简单了一点,为什么呢,举个例子:

假如 xabcd

那么 y 一定是 abcd

其中 [00...00,99...99]

所以合法的 y 一定是某一段连续的区间

我们只需要取合法的 y 所在的区间和区间 [x2,(x+1)2) 的并集即可

这样的时间复杂度为(预处理) o(n+T)

还是有点高

posted @   纯粹的  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示