「CF1264F」Beautiful Fibonacci Problem
九月 17, 2020 · OI 题解
对于长度为 $n$ 的递增等差正整数序列 $\{a, a+d, a+2d \ldots a+(n-1)d\}$,我们用三元组 $(a,d,n)$ 表示。
给定递增等差正整数序列 $(a,d,n)$,你需要构造递增等差正整数序列 $(b,e,n)$,满足:
- $b,e < 2^{64}$,且是正整数
- 对于所有 $0 \leq i < n$,$a+id$ 的十进制表示是 $F_{b+ie}$ 的十进制表示的后 $18$ 位的子串(如果没有 $18$ 位自动补前导零)。其中 $F_i$ 是指斐波那契数列的第 $i$ 项。
$1 \leq a+(n-1)d \leq 10^6$。
题解
设 $P = 10^6$,则有 $\pi(P) \mid 6P$,尝试得取 $n = 3P$ 是 $\bmod P$ 意义下的周期。
则有 $F_{n} \equiv 0 \pmod P$,$F_{n+1} \equiv 1 \pmod P$。考虑:
- $F_{2n+1} \equiv F_n^2 + F_{n+1}^2 \equiv F_{n+1}^2 \pmod {P^2}$
- $F_{3n+1} \equiv F_n F_{2n} + F_{n+1} F_{2n+1} \equiv F_{n+1}^3 \pmod {P^2}$
- $\ldots$
- $F_{kn+1} \equiv F_{n+1}^k \pmod {P^2}$
此例中,我们有 $F_{n+1} \equiv 2 t P + 1 \pmod P^2$,其中 $t$ 是与 $P$ 互质的整数。
则 $F_{kn+1} \equiv F_{n+1}^k \equiv 2kt P + 1$,取 $k = 5 k’ t^{-1}$,则枚举 $1 \leq k’ < 10^6$ 即可解决本题。
代码(Python)
1 | def exgcd(a,b): |