题意:给出 ,有 组询问,每次询问给出 ,定义数列 ,当 时 ,求最小的满足 的 。
,时限 。
记 为斐波那契数列,则 。
模
下斐波那契数列的循环节长度是
的(证明从略),故
的循环节也是 ,只用考虑前 项。
即求满足 的最小的 。一个自然的想法是将 提取到一侧, 提取到另一侧,然后用 Hash
维护。但并不总是能直接求逆。
记 ,记 为 同除 的结果,可得等价方程 。
可知
即 。又注意到
,故只有可能是
,
(实现了条件的参数分离)。
记 ,可以写出
。
此时满足互质,可以求逆变为
于是,在模数 下(模数是由
决定的)对于候选答案 ,记为三元组 对于询问 写成三元组
然后到 Hash 表中查询。
对每个模数分别预处理,总复杂度为 。(其中
是约数之和)