武大邀请赛的网络预选赛,就去做了个签到题,居然连这个递推都没推出来,真是惭愧。

而且好久没写矩阵乘法了,来回顾一下。

题意:

  求Fibonacci数列的,前n项立方和。

思路:

  可以求得一下递推公式:

然后用矩阵快速幂求出结果即可。

代码:

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <functional> using namespace std; typedef long long ll; const ll MOD = (ll)1e9+;
const ll ONE[][] = {
{, , , , },
{, , , , },
{, , , , },
{, , , , },
{, , , , },
};
const ll MU[][] = {
{, , , , },
{, , , , },
{, , , , },
{, , , , },
{, , , , },
};
const ll v1[] = {, , , , };
struct Matrix {
ll body[][]; Matrix() {}
Matrix(bool x) {
if (x) {
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
body[i][j] = ONE[i][j];
} else {
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
body[i][j] = MU[i][j];
}
} Matrix operator * (const Matrix &x) {
Matrix res;
ll tmp = ;
for (int i = ; i < ; i++)
for (int j = ; j < ; j++) {
tmp = ;
for (int k = ; k < ; k++)
tmp = (tmp+(body[i][k]*x.body[k][j])%MOD)%MOD;
res.body[i][j] = tmp;
}
return res;
}
}; Matrix pow(int k){
Matrix res(true);
Matrix d(false);
while (k>) {
if (k&) res = res*d;
d = d*d;
k >>= ;
}
return res;
} int n;
ll v2[]; int main() {
#ifdef Phantom01
freopen("WHU1540.txt", "r", stdin);
#endif // Phantom01 while (scanf("%d", &n)!=EOF) {
if (==n) break; if (n<=) {
printf("%d\n", n);
continue;
}
Matrix tmp = pow(n-);
ll t = ;
for (int i = ; i < ; i++) {
t = ;
for (int j = ; j < ; j++)
t = (t+(tmp.body[i][j]*v1[j])%MOD)%MOD;
v2[i] = t;
}
printf("%d\n", (int)v2[]);
} return ;
}

WHU 1540 Fibonacci 递推的更多相关文章

  1. SPOJ:Fibonacci Polynomial(矩阵递推&前缀和)

    Problem description. The Fibonacci numbers defined as f(n) = f(n-1) + f(n-2) where f0 = 0 and f1 = 1 ...

  2. Codeforces1065G Fibonacci Suffix 【递推】【二分答案】

    题目分析: 首先为了简便起见我们把前$15$的答案找出来,免得我们还要特判$200$以内之类的麻烦事. 然后我们从$16$开始递推.考虑猜测第i位是$0$还是$1$(这本质上是个二分).一开始先猜是$ ...

  3. POJ3070 Fibonacci(矩阵快速幂加速递推)【模板题】

    题目链接:传送门 题目大意: 求斐波那契数列第n项F(n). (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路: 用矩阵乘法加速递推. 算法竞赛进阶指南的模板: #includ ...

  4. Codeforces Gym101205D:Fibonacci Words(KMP+递推)

    Gym 101205D 题意:f[0] = "0", f[1] = "1",接下来f[i] = f[i-1] + f[i-2],相当于字符串拼接.然后给出一个n ...

  5. 牛客多校第九场 A The power of Fibonacci 杜教bm解线性递推

    题意:计算斐波那契数列前n项和的m次方模1e9 题解: $F[i] – F[i-1] – F[i-2] = 0$ $F[i]^2 – 2 F[i-1]^2 – 2 F[i-2]^2 + F[i-3] ...

  6. 斐波那契数列 递归 尾递归 递推 C++实现

    ==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...

  7. hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形 ...

  8. hdu 1723 DP/递推

    题意:有一队人(人数 ≥ 1),开头一个人要将消息传到末尾一个人那里,规定每次最多可以向后传n个人,问共有多少种传达方式. 这道题我刚拿到手没有想过 DP ,我觉得这样传消息其实很像 Fibonacc ...

  9. 51nod1149 Pi的递推式

    基准时间限制:1 秒 空间限制:131072 KB 分值: 640 F(x) = 1 (0 <= x < 4) F(x) = F(x - 1) + F(x - pi) (4 <= x ...

随机推荐

  1. sql 分割日期

    datename(Year,CreateTime)   ==2017 datename(Month,CreateTime)   7 1.获取星期(显示中文如:星期一) Select DateName( ...

  2. FCC高级编程篇之Make a Person

    Make a Person Fill in the object constructor with the following methods below: getfirstname() getLas ...

  3. Linux重新命名文件夹

    linux 重命名文件和文件夹   linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c ...

  4. BZOJ 2741 L (可持久化01Trie+分块)

    题目大意:给你一个序列,共有$q$个询问,每次询问区间$[L,R]$内最大连续字段异或和,强制在线,$n<=12000,m<=5000$ 有个细节没处理好$WA$了好久..还有一次$ans ...

  5. ActiveMQ客户端配置使用

    一.通过JNDI来使用ActiveMQ 1.jndi配置JMS对象 java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQIni ...

  6. 栈(stack)--c实现(使用双链表)

    是不是直接贴代码不太好,我竟然不知道说什么. 写这个考虑的问题,或者是纠结的问题是这个头指针怎么处理,也就是栈的顶部,最后采用的是初始化第一个栈空间浪费掉,栈顶是有元素的.好像应该去学习下画图,没图不 ...

  7. P1017 进制转换 (负进制转换)

    和平常的转化差不多 加多一步 如果余数 < 0, 那么余数减去除数(此时除数是负),商数加1 #include<cstdio> #define _for(i, a, b) for(i ...

  8. 紫书 习题 11-12 UVa 1665 (并查集维护联通分量)

    这道题要逆向思维 反过来从大到小枚举, 就是在矩阵中一点一点加进去数字,这样比较 好操作, 如果正着做就要一点一点删除数字, 不好做. 我们需要在这个过程中维护联通块的个数, 这里用到了并查集. 首先 ...

  9. 紫书 习题8-18 UVa 11536 (扫描法)

    这道题貌似可以用滑动窗口或者单调栈做, 但是我都没有用到. 这道题要求连续子序列中和乘上最小值最大, 那么我们就可以求出每一个元素, 以它为最小值的的最大区间的值, 然后取max就ok了.那么怎么求呢 ...

  10. Unix发展史

    简述 了解过去,我们才能知其然,更知所以然.总结过去,我们才会知道明天该何去何从.在时间的滚轮中,许许多多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道.流传 ...