【一些常用的递推通项公式的求法】
1.前言:在很多题目里会涉及到递推公式的使用,然而大多数递推公式都是有很强的前后依赖性,第n项的求解依赖于n前边的几项。比如大名鼎鼎的fib数列。但是很多时候,我们要O(1)公式。本文简单的谈一下一些常见的递推公式的求解。
2.一阶线性递推。形如:
这种序列,显然是可以构造一个矩阵,然后利用矩阵快速幂求解。但是我们也可以求解它的通项公式。首先是特征方程:
我们把an,an-1,an-2分别看作二次项,一次项,和常数项。然后就可以得到一个一元二次方程:
我们把这个方程接一下,会得到两个根x1,x2。(这里在复数域下解方程)。然后通项公式:
在x1,x2是共轭复数时,采用复数的三角表示法给出。一般最常用的就是前两种。其中,A,B这些系数由前几项待定系数解出。
这样,其实就很轻松地推出了fib数理的通项公式。
例题:南昌网赛H。其实这个题出的很棒,但是由于数据有点水导致很多错误解法AC。真实的做法就是:
然后找一下sqrt(17)关于998244353的二次剩余,把这个公式写成了O(1)公式,但是还是只能O(logn)解决,依旧不行,O(log)的原因就是快速幂还需要O(logn),如何消除这个log?受到BSGS的启发,我们先预处理掉一部分幂,存下来然后每次在数组里面找,这样预处理之后就是O(1)的方案。
(2)一阶分式递推。 这种类型的叫做一阶分式递推。同理,我们做这个分式的特征方程:
这个方程也是二次方程,也会有两个根: x1,x2.所以简单推导一下:
首先是两个相异的根:
由于这里的x1,x2都是常数,所以两式相除可得:
OK,这里就显然等比数列了。
然后是两个相等的根:可以解出:x1=x2= .然后:
.
把这个分式拆一下,然后x1带入可得:
显然等差数列。
例题:沈阳网赛G。题目的意思就是用n个三角形和n个bar连成电路,然后问你它的总电阻是多少。
其实这个题也是一个好题,奈何推出来的式子太特殊,题目要求的精度也不是很高,不需要公式即可解决。
思路:首先我们设bn表式已经连好了n个三角形和n个bar。来推n+1
首先式bn和一个电阻为a的12并联,也就是:并联之后,再和23并联,这时和24串联,最后和34并联。按照电阻串并联的公式推一下,可以退出bn+1和bn的关系:
其实可以继续推下去把通项公式接出来,不过因为这个式子收敛的比较快,所以当n大于20左右时,就不会有精度的错误了,都按照20来做。所以没必要推公式,直接模拟就行。
#include<bits/stdc++.h>
double a;
double Solve(int n) {if (n == 1) {return 5.0 / 3.0 * a;}double b = Solve(n - 1);double r = 3 * a + 1.0 / (1.0 / (3 * a) + 1.0 / a + 1.0 / b);return 1.0 / (1 / (3.0 * a) + 1 / r);
}
const int N = 1e6 + 10;
char x[N];
int main() {int T;scanf("%d", &T);while (T--) {scanf("%s", x);int n;if (strlen(x) > 1)n = 10;else n = x[0] - '0';scanf("%lf", &a);printf("%.10f\n", Solve(n));}
}
【一些常用的递推通项公式的求法】相关推荐
- 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!
[算法讲26:特征方程]求一阶递推与二阶递推通项公式 引入 齐次线性一阶递推 齐次线性二阶递推 题目解法 下文中详细证明略,可以看 [数列]特征方程与特征根 引入 HDU 2021多校一 Pass! ...
- 斐波那契数列的递推与递归求法
斐波那契数列的递推与递归求法: OVERVIEW 斐波那契数列的递推与递归求法: (1)递推求Fibonacci: (2)递归求Fibonacci: (3)递归求Fibonacci(记忆化数组优化): ...
- C/C++程序设计常用算法——递推法
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善. 资料仅供学习交流使用. 作者:Aliven888 1.简述 ...
- 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和
注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...
- 【笔记】从递推式得到通项公式的几种方法
开头瞎扯 数列这玩意在竞赛中考的不少,可以变形一些式子,所以做一个小总结 如果题目中出现了一个数列的式子,将其化为通项公式有可能可以快速求解或者是便于题目变形并发现题目性质 解题套路 对于大部分情况来 ...
- 【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
文章目录 一.特解形式与求法 二.特解形式与求法 示例 一.特解形式与求法 H(n)−a1H(n−1)−⋯−akH(n−k)=f(n)H(n) - a_1H(n-1) - \cdots - a_kH( ...
- 特征方程求数列的通项公式(二阶线性递推式)
特征方程求数列的通项公式(二阶线性递推式) 已知数列{an}\{a_n\}{an}满足fn=afn−1+bfn−2,a,b∈N,b≠0,n>2,f1=c1,f2=c2,(c1,c2f_n=af ...
- 有理展开定理与递推数列通项公式
可以结合 https://blog.csdn.net/ez_lcw/article/details/125731258?spm=1001.2014.3001.5502. 不同根的有理展开定理 设 R ...
- 母函数求递推的通项公式(一)
总是看到有人问递推的通项公式如何求,母函数(Generating function)是一个很好用的工具, 现总结如下以供学习 母函数是组合数学里面的概念,其实就是这坨东西 是不是看不明白,确实有些生疏 ...
最新文章
- Android Studio编写运行测试纯java代码可带main()函数
- Hadoop集群中运行MapReduce程序错误记录
- SQL SERVER 2012修改数据库名称(包括 db.mdf 名称的修改)
- 在学术论文投稿时你遇到过最奇葩的审稿意见是什么?
- 海贼王革命家—龙—实力到底如何?
- 基于UDP高性能传输协议UDT
- linux mysql使用
- 缓存与数据库的一致性
- 既稳又狂!黑鲨游戏手机2官宣发布时间:3月18日北京见
- java调用百度地图API依据地理位置中文获取经纬度
- MySQL5中文乱码解决5
- geopandas读取shp
- 黑马程序员Java基础视频教程-课程总结文档
- 用Python对自己的文章做文本分析
- 全流程各工程类型地下水环境影响评价【一级】方法与MODFLOW Flex建模技术
- 海康、大华连接相机失败:未安装USB3驱动或驱动无效
- 【Ansible】非完全离线安装Ansible和Ansible-tower
- win10开机密码忘记怎么办|win10登陆密码忘记解决方法
- Order by 语句 的使用
- java版b2b2c社交电商分布式微服务-Spring Cloud Netflix
热门文章
- 【漫画】程序员被KPI追赶的一生
- codeigniter支持php版本,CodeIgniter与PHP版本的兼容性?
- 西湖区独角兽(准独角兽)企业联盟正式成立,指令集CEO宋杨出任联盟第一届副会长...
- 【教程】HTML5+JavaScript编写转动的水彩五环
- c++如何以回车作为循环结束的标志
- ArcSDE vs. Oracle Spatial 10
- 牛年的春节,【抢票神器】最没用的一年
- 常用GIT命令整理 - WIP
- 天猫整站Springboot 从零开始搭建(一)
- Swift入门教程10-subscript下标脚本