题面

给定$n,m$,求:

$$

T(n)=\sum_{i=1}^ni\times f_i

$$

其中$f_i$为斐波那契数列的第$i$项

题解

不妨设:

$$

S(n)=\sum_{i=1}^nf_i

$$

则可以设:

$$

P(n)=nS(n)-T(n)=\sum_{i=1}^{n-1}(n-i)\times f_i

$$

所以有:

$$

P(n+1)=\sum_{i=1}^{n}(n+1-i)\times f_i=\sum_{i=1}^n(n-i)\times f_i+\sum_{i=1}^nf_i\

=\sum_{i=1}^{n-1}(n-i)\times f_i+0\times f_n+S(n)=P(n)+S(n)

$$

然后就可以用矩阵乘法加速递推了。

#include <cstdio>
#include <cstring> int n, m;
struct Matrix {
int a[4][4];
Matrix() { memset(a, 0, sizeof a); }
inline int* operator [] (const int &x) { return a[x]; }
inline Matrix operator * (Matrix &b) const {
Matrix ret;
for(int i = 0; i < 4; ++i)
for(int k = 0; k < 4; ++k)
for(int j = 0; j < 4; ++j)
(ret[i][j] += 1ll * a[i][k] * b[k][j] % m) %= m;
return ret;
}
} S, T; int main () {
scanf("%d%d", &n, &m); int k = n;
S[0][1] = 1;
T[0][0] = T[0][1] = T[0][2] = 1;
T[1][0] = T[1][2] = 1;
T[2][2] = T[2][3] = 1;
T[3][3] = 1;
while(k) {
if(k & 1) S = S * T;
T = T * T, k >>= 1;
}
printf("%lld\n", (1ll * n * S[0][2] % m + m - S[0][3]) % m);
return 0;
}

Loj10222 佳佳的Fibonacci(矩阵乘法)的更多相关文章

  1. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  2. POJ3070 Fibonacci[矩阵乘法]【学习笔记】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  3. 【Loj10222】佳佳的Fibonacci

    题面 题解 可以发现\(T(n)\)无法用递推式表示. 于是我们做如下变形: \[ T(n) = \sum _ {i = 1} ^ n i \times f_i \\ S(n) = \sum _ {i ...

  4. 佳佳的Fibonacci

    #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...

  5. 一本通1644【例 4】佳佳的 Fibonacci

    1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms         内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...

  6. 佳佳的 Fibonacci

    佳佳的 Fibonacci \(f_n=f_{n-1}+f_{n-2},f_1=f_2=1\),求\(f_1+2f_2+3f_3+...+nf_nmod\ m,1≤n,m≤2^{31}-1\). 解 ...

  7. 矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

  8. 1250 Fibonacci数列(矩阵乘法)

    1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1, fn=fn-1+fn ...

  9. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci

    题目链接 题目大意 $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$ $$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$ 求$T[n] ...

随机推荐

  1. 数据结构:Rope

    以BZOJ1507为例,这里仅仅展示动态区间问题的一些典型操作,包括插入删除和修改,查询的话不支持按顺序查询 使用起来很简单很方便 #include<cstdio> #include< ...

  2. c# delegate知识

    一.引用方法 委托是寻址方法的.NET版本.委托是类型安全的类,它定义了返回类型和参数的类型.委托是对方法的引用,也可以对多个方法进行引用,委托可以理解为指向方法地址的指针. 如:delegate i ...

  3. elasticsearch 创建索引,以及检索一条数据

    elasticsearch的重要概念 我们可以把elasticsearch当做数据库来理解: index:索引库名称,相当于关系型数据库中的表名,一个elasticsearch集群中可以有多个索引库. ...

  4. redhat 7 配置yum本地源

    http://www.unixarena.com/2015/04/how-to-create-the-yum-repository-on-rhel-7.html   1. 在虚拟机上挂上cd 2. m ...

  5. 要back的题目 先立一个flag

    要back的题目 目标是全绿!back一题删一题! acmm7 1003 1004 acmm8 1003 1004 sysu20181013 Stat Origin Title Solved A Gy ...

  6. 51nod1245 Binomial Coefficients Revenge

    题目来源: HackerRank 基准时间限制:2 秒 空间限制:131072 KB 分值: 640  C(M,N) = M! / N! / (M - N)! (组合数).给出M和质数p,求C(M,0 ...

  7. bzoj 1700: [Usaco2007 Jan]Problem Solving 解题 ——dp

    Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...

  8. 解决java在对MySQL插入数据时出现乱码问题

    1.在连接数据库的时候请注意, 最使用连接连接数据库的时候,必须在后面追加上编码的设置:useUnicode=true&characterEncoding=UTF-8,如下图所示. 参考连接: ...

  9. ubuntu tomcat的安装与配置

    一.下载jdk 大概是tomat大部分是由java写的, 所以一开始安装tomcat必须得配置好jdk http://www.oracle.com/technetwork/java/javase/do ...

  10. Python标准库笔记(2) — re模块

    re模块提供了一系列功能强大的正则表达式(regular expression)工具,它们允许你快速检查给定字符串是否与给定的模式匹配(match函数), 或者包含这个模式(search函数).正则表 ...