原题链接
首先是朴素解法,每次遍历 n 然后查看 每个数的平方根是否是其前缀
时间复杂度 O(T⋅n⋅logn)
这里有两个数,一个是 x,即一个整数,一个是 y,是 x 的平方根,因此我们可以换一个视角.
统计对于每一个整数 x,有多少 y∈[x2,(x+1)2) 满足 x 是 y 的前缀
这样似乎简单了一点,为什么呢,举个例子:
假如 x 是 abcd
那么 y 一定是 abcd∗
其中 ∗∈[00...00,99...99]
所以合法的 y 一定是某一段连续的区间
我们只需要取合法的 y 所在的区间和区间 [x2,(x+1)2) 的并集即可
这样的时间复杂度为(预处理) o(n+T)
还是有点高
欢迎提问
比官方题解更容易理解
是刘老师的作业无疑了[doge]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步