Codeforces 1264F - Beautiful Fibonacci Problem(猜結論+找性質)
一道名副其實(beautiful)的結論題。
首先看到這道設問方式我們可以很自然地想到套用斐波那契數列的恆等式,注意到這裡涉及到 \(F_{a+id}\),因此考慮斐波那契數列組合恆等式 \(F_{m+n+1}=F_mF_{n}+F_{m+1}F_{n+1}\),具體證明戳這裡,這裡就不再贅述了。
注意到此題還涉及後 \(18\) 位,也就是要將斐波那契數列的各種運算放到模 \(10^{18}\) 意義下進行,因此我們可以考慮找一下斐波那契數列在模 \(10^{18}\) 意義下的迴圈節,打個表可以發現斐波那契數列在模 \(10,100,1000,10000,100000,\cdots\)
Observation \(1\). \(F_{Ni}\equiv 0\pmod{10^k}(i\in\mathbb{N}_+)\)。
接下來我們考慮再來觀察一些性質,可以注意到 \(F_{2N+1}=F_{N+1}^2+F_N^2\equiv F_{N+1}^2\pmod{10^{2k}}\),\(F_{3N+1}=F_{2N+1}F_{N+1}+F_{2N}F_N\equiv F_{2N+1}F_{N+1}\equiv F_{N+1}^3\pmod{10^{2k}}\),如此歸納下去可以得到一個普遍性的結論:
Observation \(2\). \(F_{xN+1}\equiv F_{N+1}^x\pmod{10^{2k}},x\in\mathbb{N}_+\)
接下來考慮探究一下這個 \(F_{N+1}\) 又有什麼性質,有一個我也不知道怎麼推出來(有哪位好心的鴿鴿教教蒟蒻這東西怎麼證明啊 qwq/kel)的性質:
Observation \(3\). \(F_{N+1}\) 可以寫成 \(8\times 10^k·t+1\) 的形式,其中 \(t\perp 10\)
證明不會
因此我們有 \(F_{xN+1}=F_{N+1}^x=(8\times 10^k·t+1)^x\),而我們暴力二項式定理將這東西展開就會發現平方項以上模 \(10^{2k}\) 都等於 \(0\),因此我們只用保留 \(1\) 次項和 \(0\) 次項即可,即
Observation \(4\). \(F_{xN+1}\equiv 8\times 10^k·t·x+1\pmod{10^{2k}}\)
接下來回到原問題,我們顯然希望對每個 \(v=a+ix,i\in\mathbb{Z}\cap[0,n)\) 找到一個 \(p\) 滿足 \(F_p\equiv v·10^u+q\pmod{10^{18}}\),其中 \(u\le 12,q<10^{u}\),這樣原問題顯然就做完了,因為這樣從 \(10^u\) 位開始往後數一定可以得到 \(v\)。由於我們這些操作要放在模 \(10^{18}\) 意義下進行,因此我們取 \(k=9\),此時 \(N=1.2\times 10^{10}\),我們考慮令 \(X=125·t^{-1}·a\bmod{10^9},Y=125·t^{-1}·d\bmod{10^9}\),其中 \(t^{-1}\) 表示 \(t\) 在模 \(10^9\) 意義下的逆元,那麼我們構造 \(b=XN+1,e=YN\) 符合題意,因為:
\[\begin{aligned} &F_{b+ie}\\ =&F_{(X+iY)N+1}\\ \equiv&8·10^9·t·(X+iY)+1\\ \equiv&8·10^9·t·125·t^{-1}(a+id)+1\\ =&10^{12}·(10^9k+1)·(a+id)+1\\ \equiv&10^{12}·(a+id)+1\pmod{10^{18}} \end{aligned} \]符合我們剛才的構造。
一句話來說就是 \(b=368131125a\bmod 10^9·1.2\times 10^{10}+1,e=368131125d\bmod 10^9+1.2\times 10^{10}\)
於是我們就做完了這個難度 3.5k 的題(
程式碼(只有短短的 8 行):
#include <cstdio>
int n,a,d;
unsigned long long m=368131125,mod=1e9,x=1.2e10;
int main(){
scanf("%d%d%d",&n,&a,&d);
printf("%llu %llu\n",m*a%mod*x+1,m*d%mod*x);
return 0;
}