洛谷 P3986 斐波那契数列

devtools/2025/3/19 22:29:29/

P3986 斐波那契数列

题目描述

定义一个数列:
f ( 0 ) = a , f ( 1 ) = b , f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(0) = a, f(1) = b, f(n) = f(n - 1) + f(n - 2) f(0)=a,f(1)=b,f(n)=f(n1)+f(n2)

其中 a, b 均为正整数,n ≥ 2

问有多少种 (a, b),使得 k 出现在这个数列里,且不是前两项。

由于答案可能很大,你只需要输出答案模 10^9 + 7 的结果即可。

输入格式

一行一个整数 k

输出格式

一行一个数,表示答案模 10^9 + 7的结果。

输入输出样例 1

输入 1

19260817

输出 1

34166325

输入输出样例 2

输入 2

1000000000

输出 2

773877569

说明/提示

1 ≤ k ≤ 10^9

EXP:

针对于该函数数列中的数据分别为 : a + b , a + 2 b , 2 a + 3 b , 3 a + 5 b 即 a , b 的系数是斐波那契数列的数据。 1 ≤ k ≤ 1 0 9 , 针对 40 项左右的斐波那契数就已经超过该范围,并且 a , b 都是正整数。所以可以遍历斐波那契数列判断 a . k = a f [ x − 1 ] + b f [ x ] = > b f [ x ] = k − a f [ x − 1 ] = > b = ( k − a f [ x − 1 ] ) / f [ x ] 因为 a , b 正整数的缘故。 k − a f [ x − 1 ] ≡ 0 ( m o d f [ x ] ) = > k ≡ a f [ x − 1 ] ( m o d f [ x ] ) , 因为 g c d ( f [ x ] , f [ x − 1 ] ) = 1 a ≡ ( k ∗ f − 1 [ x − 1 ] ( m o d f [ x ] ) ) ( m o d f [ x ] ) 并且要保证 b > 0 , 即判断 a < k / f [ x − 1 ] 针对于该函数数列中的数据分别为:a+b,a+2b,2a+3b,3a+5b即a,b的系数是斐波那契数列的数据。\\ 1≤k≤10^9,针对40项左右的斐波那契数就已经超过该范围,并且a,b都是正整数。所以可以遍历斐波那契数列判断a.\\ k = af[x-1] + bf[x]=>bf[x] = k - af[x-1]=>b=(k-af[x-1])/f[x]因为a,b正整数的缘故。\\ k-af[x-1]\equiv0(modf[x])=>k\equiv af[x-1](modf[x]),因为gcd(f[x],f[x-1])=1\\ a\equiv (k * f^{-1}[x-1](modf[x]))(modf[x])并且要保证b >0,即判断a<k/f[x-1] 针对于该函数数列中的数据分别为:a+b,a+2b,2a+3b,3a+5ba,b的系数是斐波那契数列的数据。1k109,针对40项左右的斐波那契数就已经超过该范围,并且a,b都是正整数。所以可以遍历斐波那契数列判断a.k=af[x1]+bf[x]=>bf[x]=kaf[x1]=>b=(kaf[x1])/f[x]因为a,b正整数的缘故。kaf[x1]0(modf[x])=>kaf[x1](modf[x]),因为gcd(f[x],f[x1])=1a(kf1[x1](modf[x]))(modf[x])并且要保证b>0,即判断a<k/f[x1]

python"># coding: utf-8
MOD = 10 ** 9 + 7def gcd_extended(a,b):"""扩展欧几里得算法返回一个元组(d,x,y) 使得 d = gcd(a,b) = ax + by"""if a == 0:return (b,0,1)gcd , x1 , y1 = gcd_extended(b % a , a)x = y1 - (b // a) * x1y = x1return (gcd,x,y)def mod_inverse(a,m):"""求模逆元使用扩展欧几里得算法返回a在m下的逆元如果没有逆元返回None"""gcd, x, y = gcd_extended(a,m)if gcd != 1:return None # 如果a 和 m不互素else:return x % m # 返回逆元def matrix_mul(A, B):"""矩阵乘法"""return [[sum(a * b for a, b in zip(col, row)) for col in zip(*B)] for row in A]def matrix_pow(A, n):"""矩阵快速幂"""size_ = len(A)if n == 0:res = [[0 for _ in range(size_)] for _ in range(size_)]for i in range(size_):res[i][i] = 1elif n == 1:return Aelse:y = matrix_pow(A, n // 2)if n & 1:return matrix_mul(matrix_mul(y, y), A)return matrix_mul(y, y)K = int(input())
counter = 0
A = [[0, 1],[1, 1]
]
# 遍历前面的斐波那契数列
for i in range(2,42):temp = matrix_mul([[0,1]],matrix_pow(A,i - 1))f_x = temp[0][1]f_x_1 = temp[0][0]# 计算范围内最小的aa = (K * mod_inverse(f_x_1,f_x)) % f_x# 求取k / f[x-1]	由于向下取整,所以b > 0时要求是个足够大的正整数target = K // f_x_1 - 1if a < target:# 如果a = 0则a本身不在计算if a == 0:counter -= 1# 根据a的大小,加上a + k_counter * f[x] 的所有acounter = (counter + 1 + (target - a) // f_x) % MOD
print(counter)

http://www.ppmy.cn/devtools/168461.html

相关文章

基于消失点标定前视相机外参

1. 消失点 艺术家&工程师在纸上表现立体图时,常用一种透视法,这种方法源于人们的视觉经验:近大远小,且平行的直线都消失于无穷远处同一个点。就像我们观察两条平行的铁轨时会觉得他们相交于远处的一点,我们把这个点称为消失点。 图1 铁轨组成的消失点 2. 在标定中的应…

卷积神经网络 - 卷积的互相关

一、卷积核翻转 一句话直击本质 卷积核翻转就是把卷积核&#xff08;比如[1,2,3]&#xff09;倒过来变成[3,2,1]后再滑动计算&#xff0c;这是严格数学定义的要求&#xff0c;但深度学习中的卷积实际上跳过了这一步。 直观理解步骤分解 场景设定 假设我们要用卷积核检测心…

华为重拳出击!华为重拳出击!华为重拳出击!

大家好&#xff0c;我是小程程。 华为出了一个大瓜哦&#xff01; 华为多名产品线负责人被开除 据财新网 3 月 10 日报道&#xff0c;华为最近发了一则内部通报&#xff1a; 华为称&#xff0c;经审计发现&#xff0c;&#xff08;ICT 产品与解决方案&#xff0c;半导体业务部、…

告别数据库束缚!用esProc在 csv 文件上执行 SQL

esProc SPL 支持简单 SQL&#xff0c;可以直接在 csv 等结构化文本文件上执行 SQL 语句&#xff0c;这样&#xff0c;不用数据库也可以用 SQL 计算了。 先下载 esProc SPL&#xff1a;免费下载 不想折腾源代码的话&#xff0c;可以用标准版&#xff0c;找到相应版本下载后安装…

【GIT】什么是GitHub Actions ?

1. GitHub Actions 基础 GitHub Actions 是 GitHub 提供的自动化工具&#xff0c;用于构建、测试和部署代码。使用场景&#xff1a;自动化代码构建、测试、部署、代码审查、分支管理等。成本&#xff1a;GitHub 提供免费和付费计划&#xff0c;免费计划每月有 2,000 分钟的运行…

案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.2案例:某游戏公司“特种作战小组“模式

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 某游戏公司"特种作战小组"团队结构创新案例分析引言&#xff1a;游戏行业团队管理的突围挑战一、架构解析&#xff1a;从游戏机制到管理范式的迁移1.1 特种作战小…

它,让机器人与HMI屏无缝对接

随着工业自动化向智能化发展&#xff0c;机器人与HMI屏的通信变得至关重要。本文将为您介绍一款创新的解决方案&#xff0c;它打破了通信协议的壁垒&#xff0c;实现机器人与HMI屏的无缝连接。 随着工业自动化向智能化的迈进&#xff0c;生产制造业正加速引入大量工业机器人以替…

【杂谈】-2025年AI与网络安全六大趋势展望

2025年AI与网络安全六大趋势展望 文章目录 2025年AI与网络安全六大趋势展望1、数据安全&#xff1a;生成式AI采用的核心要素2、AI立法推动各行业网络弹性建设3、IT和安全领导者需强化云中数据防护4、数据安全态势管理&#xff1a;网络弹性的关键支撑5、AI代理&#xff1a;增强网…