首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客: https://blog.csdn.net/weixin_44049566/article/details/88945949 首先直接暴力求使用O(n)的时间复杂度肯定是不行的,所以我们应该使用更优的时间复杂度. 设f(n)为裴波那契数列第n项.让我们来构造两个矩阵: 和. 现在我们不妨将两个矩阵相乘,化简过后可以得到:,也就是. 如果再将得到的新矩阵乘以,便可以得到. 也就是我们想得到第n项,就可以这么实现:,也就是. 看到幂我们就可…
[ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I [矩阵乘法]裴波拉契数列II [矩阵乘法]裴波拉契数列II Description 形如 1 1 2 3 5 8 13 21 34 55 89 144-的数列,求裴波拉契数列的第n项. Input n (1< n <2^31) Output 一个数为裴波拉契数列的第n项mod 10000; Sample Input 123456789 Sample Output 4514 题目解析 首先看题面,是斐波那契数列.首先想到递归,但考虑到N的值…
[ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I I [矩阵乘法]裴波拉契数列III [矩阵乘法]裴波拉契数列III Description 求数列f[n]=f[n-1]+f[n-2]+1的第N项.f[1]=1,f[2]=1. Input n(1<n<231-1) Output 一个数为裴波拉契数列的第n项mod 9973; Sample Input 12345 Sample Output 8932 题目解析 对于为什么用矩阵乘法来做,详见博客斐波那契数列II 我们考虑矩阵 ⊏ f […
矩阵快速幂 定义矩阵A(m*n),B(p*q),A*B有意义当且仅当n=p.即A的列数等于B的行数. 且C=A*B,C(m*q). 例如: 进入正题,由于现在全国卷高考不考矩阵,也没多大了解.因为遇到了斐波那契这题... 注意到: Fn+1=Fn+Fn-1 我们会有: 则: 所以我们只需要想办法求矩阵A的幂,这时候我们当然想要用快速幂. 代码部分: 定义矩阵: struct matrix{ ll a[][]; }; (类比整数的快速幂)预处理: [我们需要一类似于1的矩阵:] 『1 0 0 0…
题目: 1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, -) 给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可. Input 输入1个数n(1 <=…
hihocoder #1143 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘.对于这个棋盘,一共有多少种不同的覆盖方法呢? 举个例子,对于长度为1到3的棋盘,我们有下面几种覆盖方式: 提示:骨牌覆盖 提示:如何快速计算结果 输入 第1行:1个整数N.表示棋盘长度.1≤N≤100,000,000 输出 第1行:1个整数,表示…
题目:http://poj.org/problem?id=3070 用矩阵快速幂加速递推. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; struct Matrix{ ][]; Matrix operator * (const Matrix &y) const { Matrix x; memset(x.a,,sizeof x.a); ;i<…
题目大意: F[0]=0 F[1]=1 F[n+2]=F[n+1]+F[n] 求F[n] mod 104. F[n+2] F[n+1] = 1 1 1 0 * F[n+1] F[n] 记这个矩阵为A,则有: F[n+1] F[n] = An * F[1] F[0] = An * 1 0 然后可以快速幂 #include<cstdio> #include<vector> using namespace std; typedef vector<int> vec; typed…
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3024    Accepted Submission(s): 930 Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下:F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 )现在给出a, b…
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1534    Accepted Submission(s): 435 Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a,…