HDU - 5950 Recursive sequence(矩阵快速幂)
题目:HDU5954
题意:
奶牛报数,先给两个数a和b,分别是f[n-2],f[n-1],之后每头奶牛i报数为f[i-1] + 2 * f[i-2] + i^4;给出n,求din头奶牛要报的数字,对2147493647取余。
思路:
看到这个式子知道这是一个矩阵快速幂,然后开始推式子,在我给队友写出平方差公式来队友看到杨辉三角形式后后,就去推7*7的矩阵快速幂了,但因为刚刚学这个,但结束就挂死在这个题上了。
式子:
之后就是套裸的矩阵快速幂就好了,个人感觉做题补题真的是长知识最快的方法啊。补题的时候自己直接用矩阵来写麻烦的要死,就把矩阵放在一个结构体中,顺便方便很多。
代码:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <map> #include <set> #include <vector> using namespace std; typedef long long ll; const ll MOD = 2147493647; struct Maxt {ll mp[8][8];Maxt() {for(int i = 1; i<=7; i++) {for(int j = 1; j<=7; j++) {mp[i][j] = 0;}}} } fp,tmp; int n,a,b,T; int read() {int res = 0;char op;op = getchar();if(op>='0' && op<='9') {res = op-'0';op = getchar();}while(op>='0' && op<='9') {res = res*10 + op-'0';op = getchar();}return res; }void init() {for(int i = 1; i<=7; i++) {for(int j =1; j<=7; j++) {fp.mp[i][j] = 0;tmp.mp[i][j] = 0;}}fp.mp[1][1] = 1,fp.mp[2][1] = 1,fp.mp[2][2] = 1,fp.mp[7][6] = 1;fp.mp[3][1] = 1,fp.mp[3][2] = 2,fp.mp[3][3] = 1,fp.mp[4][1] = 1;fp.mp[4][2] = 3,fp.mp[4][3] = 3,fp.mp[4][4] = 1,fp.mp[5][1] = 1;fp.mp[5][2] = 4,fp.mp[5][3] = 6,fp.mp[5][4] = 4,fp.mp[5][5] = 1;fp.mp[6][5] = 1,fp.mp[6][6] = 1,fp.mp[6][7] = 2;tmp.mp[1][1] = 1,tmp.mp[2][1] = 3,tmp.mp[3][1] = 9,tmp.mp[4][1] = 27,tmp.mp[5][1] = 81,tmp.mp[6][1] = b,tmp.mp[7][1] = a; }Maxt Maxtcalc(const Maxt& a,const Maxt& b) {Maxt t;for(int i = 1; i<=7; i++) {for(int j = 1; j<=7; j++) {t.mp[i][j] = 0;for(int k = 1; k<=7; k++) {t.mp[i][j] = (t.mp[i][j] + (a.mp[i][k]*b.mp[k][j]) % MOD) % MOD;}}}return t; }Maxt qcalc(int x,Maxt s) {Maxt tmp;for(int i = 1; i<=7; i++) {tmp.mp[i][i] = 1;}while(x) {if(x&1) {tmp = Maxtcalc(tmp, s);}s = Maxtcalc(s, s);x>>=1;}return tmp; }int main() {T = read();while(T--) {n = read();a = read();b= read();if(n == 1) {printf("%d\n",a);continue;}if(n == 2) {printf("%d\n",b);continue;}if(n == 3) {printf("%d\n",81+2*a+b);continue;}n = n-2;init();fp = qcalc(n,fp);Maxt ans = Maxtcalc(fp, tmp);printf("%lld\n",ans.mp[6][1]%MOD);}return 0; } /* 样例输入: 2 3 1 2 4 1 10 样例输出: 85 369 */
View Code
转载于:https://www.cnblogs.com/sykline/p/9769878.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 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...
- 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里是不变的,可以数论分块,再在每一段里 ...
最新文章
- 2005年4月全国计算机等级考试二级C语言笔试试题及答案
- 51CTO论坛资料共享改版细分等您来!
- (2.10)备份与还原--利用T-SQL进行备份还原
- jsp简单练习-简单的下拉表单
- CoSENT:特征式匹配与交互式匹配有多大差距?
- boost::gregorian模块实现自出生以来的天数的测试程序
- 层和 native_React-Native与小程序的底层框架比较
- 选型OpenStack,需要谨防“舍本逐末”
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
- 【Java线程池】Java线程池汇总,看这一篇文章就够了
- 抖音一个老人和一个机器人歌曲_一个老人孤独去世,一个老人安然离世
- python核心语法题_《Python核心编程》第3章笔记
- 一个神秘 URL 酿大祸,差点让我背锅!
- 基于python版本的谷歌GEE云计算平台使用,以DEM数据下载为例(GEE系列1)
- GIS专业/GIS方向需要考那些证书
- 关于 NM_CONTROLLED和Network Manager
- 【k哥爬虫普法】爬虫第一案,侵犯个人隐私,“入侵”短视频服务器!
- JM模型I帧帧内预测流程
- 生活品质-断舍离Day4
- macos docker挂载iso报failed to setup loop device: No such file or directory和mount: permission denied解决
热门文章
- 【大数据部落】用R语言进行网站评论文本挖掘聚类
- JAVA程序将PDF转化为TXT
- 顺序存储循环队列的基本操作
- 操作系统 第一部分 操作系统的基本概念
- python无法显示饼图
- python使用scipy模块from scipy.misc import imread时报错:cannot import name imread问题解决
- Linux网络编程和套接字
- 武汉科技大学计算机课程设置,武汉科技大学计算机控制与接口技术课程实施方案.docx...
- 2021-08-08 事务的提交,回滚
- 百度区块链 xuperchain 节点端 tps统计脚本