HDU 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence
题意:给出前两项和递推式,求第n项的值。
题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$
主要问题是$i^4$处理,容易想到用矩阵快速幂,那么$i^4$就需要从$(i-1)$转移过来。
$ i^4 = (i-1)^4 + 4*(i-1)^3 + 6*(i-1)^2 + 4*(i-1) + 1$
$f_i$ $f_{i-1}$ $i^4$ $i^3$ $i^2$ $i$ $1$ = $f_{i-1}$ $f_{i-2}$ $(i-1)^4$ $(i-1)^3$ $(i-1)^2$ $(i-1)$ $1$ *
$\begin{pmatrix}
1 & 1 & 0 & 0 & 0 & 0 & 0 \\
2 & 0 & 0 & 0 & 0 & 0 & 0 \\
1 & 0 & 1 & 0 & 0 & 0 & 0 \\
4 & 0 & 4 & 1 & 0 & 0 & 0 \\
6 & 0 & 6 & 3 & 1 & 0 & 0 \\
4 & 0 & 4 & 3 & 2 & 1 & 0 \\
1 & 0 & 1 & 1 & 1 & 1 & 1 \\
\end{pmatrix}$
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #define N 7 6 using namespace std; 7 8 typedef long long ll; 9 const ll mod=2147493647; 10 11 struct mat 12 { 13 ll m[N][N]= 14 { 15 {1,1,0,0,0,0,0}, 16 {2,0,0,0,0,0,0}, 17 {1,0,1,0,0,0,0}, 18 {4,0,4,1,0,0,0}, 19 {6,0,6,3,1,0,0}, 20 {4,0,4,3,2,1,0}, 21 {1,0,1,1,1,1,1} 22 }; 23 }; 24 25 mat mul(mat a,mat b) 26 { 27 mat ans; 28 int i,j,k; 29 for(i=0;i<N;i++) 30 for(j=0;j<N;j++) 31 ans.m[i][j]=0; 32 33 for(i=0;i<N;i++) 34 for(j=0;j<N;j++) 35 for(k=0;k<N;k++) 36 ans.m[i][j]=(ans.m[i][j]+a.m[i][k]*b.m[k][j])%mod; 37 return ans; 38 } 39 40 ll matpow(int p,ll A,ll B) 41 { 42 mat ans,tmp; 43 int i,j; 44 for(int i=0;i<N;i++) 45 for(int j=0;j<N;j++) 46 ans.m[i][j]=0; 47 p-=2; 48 ans.m[0][0]=B;ans.m[0][1]=A; 49 ans.m[0][2]=16;ans.m[0][3]=8;ans.m[0][4]=4;ans.m[0][5]=2;ans.m[0][6]=1; 50 while(p) 51 { 52 if(p&1) ans=mul(ans,tmp); 53 tmp=mul(tmp,tmp); 54 p=p>>1; 55 } 56 return ans.m[0][0]; 57 } 58 59 int main(){ 60 int t; 61 scanf("%d",&t); 62 while(t--){ 63 ll M,A,B; 64 scanf("%lld%lld%lld",&M,&A,&B); 65 printf("%lld\n",matpow(M,A,B)%mod); 66 } 67 return 0; 68 }
View Code
转载于:https://www.cnblogs.com/ehanla/p/9807970.html
HDU 5950 Recursive sequence(矩阵快速幂)相关推荐
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence 矩阵快速幂,原根转化模意义下对数,BSGS
文章目录 题意 题解 对数法转指数线性递推 原根与模意义下求对数 拔山盖世! 最终步骤 Problem Origin 狠搞了一个多星期,做出来之后仍然一知半解,写个博客重理思路. 题意 定义序列fff ...
- Recursive sequence(矩阵快速幂)
这就是矩阵的魅力吗,爱了爱了 题 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #i ...
- HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)
题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...
- HDU 5950——Recursive sequence
Recursive sequence 题意:给定起始的两个数a,b,求第n个数%mod 思路: 第一眼看出来是矩阵快速幂,不过当时没推出来(其实推了一半把自己给否定了) 正解是,根据二项式定理,对于f ...
- hdu 2842 Chinese Rings 矩阵快速幂
分析: 后面的环能不能取下来与前面的环有关,前面的环不被后面的环所影响.所以先取最后面的环 设状态F(n)表示n个环全部取下来的最少步数 先取第n个环,就得使1~n-2个环属于被取下来的状态,第n-1 ...
- HDU - 4990 Reading comprehension(矩阵快速幂,水题)
题目链接:点击查看 题目大意:给出一段程序,进行优化后提交 题目分析:其实就是找规律,大水题一个,偶尔也是需要做做水题找找自信(逃) 先将题目中的程序拿下来,跑上100项,然后拿到oeis里找一下规律 ...
- HDU - 5015 233 Matrix(矩阵快速幂)
题目链接:点击查看 题目大意:初始化:第一行依次为233,2333,23333....第一列依次为a0,a1,a2....(题目中会给出),再给出递推公式:,求矩阵中第n行m列的数字是多少 题目分析: ...
- HDU6395 Sequence(矩阵快速幂+数论分块)
题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里 ...
最新文章
- 希捷期望HAMR实现其营收的增长
- 分析文件上传过程中的HTTP头部
- vsftpd 默认配置文件
- 18.了解各种与排序有关的选择
- Maven 打包过滤掉jar包、class文件和指定jsp文件
- Linux Repositories 2
- 什么是广告?为什么我们讨厌广告?
- 深度学习实战之车牌识别项目
- Docker的bridge和macvlan两种网络模式
- 公众号敏感词检测工具
- 自走棋突然显示服务器无法定位,刀塔自走棋服务器无法定位游戏会话_刀塔自走棋服务器无法定位游戏会话怎么回事_玩游戏网...
- fn1-call-call-fn2-面试题
- 计算机软件被放进回收站,电脑不能把文件放入回收站只能永久删除怎么办?
- 【windows7桌面图标蓝底】4步帮你去掉
- Mysql根据汉字英文字母进行排序
- hive hive beeline常用参数
- 股权、期权和原始股傻傻分不清楚?一文帮你安排的明明白白!
- SqlServer计算2个时间的间隔时间(工作日时间),不包括法定节假日和周末
- 什么是编程语言的强类型,弱类型
- Spark大数据平台应用实战