[CF1264F] Beautiful Fibonacci Problem 题解

《关于在做图论题单时忽遇构造题的那些事》。


通过手模,我们可以发现第一个事情:

\(k\ge 3\) 时,\(F_{1.5\times 10^k}\equiv F_0(\bmod\ 10^k)\)

我们设 \(N=12\times 10^k\),那么显然有:

性质1:\(F_{cN}\equiv 0(\bmod\ 10^k)\)

那么就有 \(F_N^2\equiv 0(\bmod\ 10^{2k})\),根据 \(F_{n+m+1}=F_nF_m+F_{n+1}F_{m+1}\),可以推得:

\[\begin{aligned} F_{2N+1}&=F_{N+1}^2+F_N^2\\&\equiv F_{N+1}^2(\bmod\ 10^{2k})\\ F_{3N+1}&=F_{2N+1}F_{N+1}+F_{2N}F_N\\&\equiv F_{N+1}^2\times F_{N+1}\\&=F_{N+1}^3(\bmod\ 10^{2k})\\\dots\\ F_{cN+1}&=F_{(c-1)N+1}F_{N+1}+F_{(c-1)N}F_N\\&\equiv F_{N+1}^{c-1}\times F_{N+1}\\&=F_{N+1}^c(\bmod\ 10^{2k}) \end{aligned}\]

那么就有了性质2:

性质2:\(F_{cN+1}\equiv F_{N+1}^c(\bmod\ 10^{2k})\)

然后我们又会发现一个神秘性质:

性质3:定有正整数 \(10\not|\ t\),满足 \(F_{N+1}=10^k8t+1\)

由于 \(F_{N+1}^c\) 的高次项都含有 \(10^{2k}\),所以就有了第四个性质:

性质4:\(F_{cN+1}\equiv 10^k8ct+1(\bmod\ 10^{2k})\)

考虑构造 \(F_{bi+e}=(ai+d)10^p+1\),这样就可以满足题目要求了。设 \(x=125t^{-1}a\bmod 10^9,y=125t^{-1}d\bmod 10^9,b=xN+1,e=yN\),则有:

\[\begin{aligned} F_{bi+e}&=F_{(xi+y)N+1}\\ &\equiv 10^9\times 8(xi+y)t+1\\ &=10^{12}(ai+d)+1(\bmod 10^{18}) \end{aligned}\]

所以 \(b=xN+1,e=yN\) 是一组合法解。

时间复杂度可以做到 \(O(1)\)

#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int n,a,d,c=368131125,k=1.2e10,p=1e9;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>a>>d;
	cout<<a*c%p*k+1<<" "<<d*c%p*k;
	return 0;
} 
posted @ 2025-03-04 09:44  长安一片月_22  阅读(14)  评论(0)    收藏  举报