特征根法求通项+广义Fibonacci数列找循环节 - HDU 5451 Best Solver
2017-03-05 17:21
218 查看
Best Solver
Problem's Link
Mean:
给出x和M,求:(5+2√6)^(1+2x)的值。x<2^32,M<=46337.
analyse:
这题需要用到高中的数学知识点:特征根法求递推数列通项公式。
方法是这样的:
对于这题的解法:
记λ1=5+2√6,λ2=5-2√6,则λ1λ2=1,λ1+λ2=10
根据韦达定理可以推导出:λ1,λ2的特征方程为 x^2-10x+1=0
根据λ1=5+2√6,λ2=5-2√6是特征方程x^2-10x+1=0的解,可以求出:b=-10,c=1
再使用该特征方程反向推导出递推公式为:a
=10*a[n-1]-a[n-2]
再由特征根法确定通项为:a
=(5+2√6)^n+(5-2√6)^n
观察通项,发现(5-2√6)^n<1,(5+2√6)^n>1。并且可以确定(5+2√6)^n的整数部分的值为a
-1
到这里,可以利用线性递推公式a
=10*a[n-1]-a[n-2],构造矩阵来找循环节。
为什么要找循环节呢?
因为n=2^x相当大,而模数M<=46337,对于每一个模数M,都存在循环节,这样的话我们就不需要完整的计算n次幂运算了。
而且我们发现这些循环节都比较小,所以我们可以直接暴力求矩阵循环节。
Time complexity: O(N+logx)
view code
相关文章推荐
- 特征根法求通项+广义Fibonacci数列找循环节 - HDU 5451 Best Solver
- hdu 5451 Best Solver (特征方程求通项+广义Fibonacci数列找循环节)
- hdu 5451 Best Solver -广义斐波那契+矩阵快速幂+共轭构造+循环节
- hdu 5451 Best Solver 快速矩阵乘法 Fibonacci数列的循环节
- Hdu 5451 Best Solver(快速幂取模+循环节) -2015 ACM-ICPC沈阳网赛1002
- HDU 5451 Best Solver(矩阵快速幂+ 共轭复数 + 循环节 数论啊 )
- hdu 5451 Best Solver(2015沈阳赛区网赛)
- HDU 5451 Best Solver(fibonacci)
- 【HDU】5451 Best Solver(2015 ACM/ICPC Shenyang Online)
- ACM学习历程—HDU 5451 Best Solver(Fibonacci数列 && 快速幂)(2015沈阳网赛1002题)
- hdu 5451 Best Solver(矩阵乘法+数论)
- HDU 5451 Best Solver(数学)
- HDU 5451 Best Solver (2015年沈阳赛区网络赛B题)
- [HDU 5451] Best Solver (向下取整+矩阵快速幂+广义Fibonacci降幂)
- KMP之循环节 hdu 3746
- HDU 1005 Number Sequence(循环节) *
- hdu 6038 Function 循环节
- HDU 1005 Number Sequence【循环节(取模)】
- HDU-1358 Period 字符串问题 KMP算法 求最小循环节
- 【HDU 5895】【指数循环节 矩阵 快速幂 逆元 推公式】Mathematician QSC 由递推式推公式