题面
给定$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(矩阵乘法)的更多相关文章
-
POJ3070 Fibonacci[矩阵乘法]
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
-
POJ3070 Fibonacci[矩阵乘法]【学习笔记】
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
-
【Loj10222】佳佳的Fibonacci
题面 题解 可以发现\(T(n)\)无法用递推式表示. 于是我们做如下变形: \[ T(n) = \sum _ {i = 1} ^ n i \times f_i \\ S(n) = \sum _ {i ...
-
佳佳的Fibonacci
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...
-
一本通1644【例 4】佳佳的 Fibonacci
1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms 内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,*去看题解,感觉自己菜到家了qaq ...
-
佳佳的 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\). 解 ...
-
矩阵乘法快速幂 codevs 1250 Fibonacci数列
codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1 ...
-
1250 Fibonacci数列(矩阵乘法)
1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1, fn=fn-1+fn ...
-
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] ...
随机推荐
-
php多文件上传
多文件上传<input type="file" name="file[]" multiple /> <?php function reArra ...
-
Java学习笔记2
package welcome; public class Constants { public static void main(String[] args){ final double CM_PE ...
-
Win7 32bit + Matlab2013b +Visual Studio 2010联合编程配置
要建立独立运行的C应用程序,系统中需要安装Matlab.Matlab编译器.C/C++编译器以及Matlab C/C++数学库函数和图形库函数. Matlab编译器使用mbuild命令可以直接将C/C ...
-
Python学习(3)变量类型
目录 变量赋值 多个变量赋值 标准数据类型 Python数字 Python字符串 Python列表 Python元组 Python元字典 Python数据类型转换 type数据类型查看 变量赋值 Py ...
-
HDU5805 NanoApe Loves Sequence (BestCoder Round #86 B)前后缀预处理
分析:维护空隙的差,然后预处理前缀最大,后缀最大,扫一遍 #include <cstdio> #include <cstring> #include <cmath> ...
-
[TypeScript] Using Exclude and RootDir until File Globs Lands in 2.0.
Files globs will be available in TypeScript 2.0, so in the meantime, we need to use "exclude&qu ...
-
URAL 2034 : Caravans
Description Student Ilya often skips his classes at the university. His friends criticize him for ...
-
[Android]Gradle 插件 DiscardFilePlugin(class注入&;清空类和方法)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6732128.html Android Gradle 插件 Di ...
-
【Django】django 处理request流程细节(转)
首先发生的是一些和 Django 有关(前期准备)的其他事情,分别是: 如果是 Apache/mod_python 提供服务,request 由 mod_python 创建的 django.core. ...
-
Redis Sentinel实现的机制与原理详解
序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以 ...