题目: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(矩阵快速幂)相关推荐

  1. 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] 类似于斐波那契数列的递推式子吧, 但 ...

  2. Codeforces 1106F Lunar New Year and a Recursive Sequence 矩阵快速幂,原根转化模意义下对数,BSGS

    文章目录 题意 题解 对数法转指数线性递推 原根与模意义下求对数 拔山盖世! 最终步骤 Problem Origin 狠搞了一个多星期,做出来之后仍然一知半解,写个博客重理思路. 题意 定义序列fff ...

  3. Recursive sequence(矩阵快速幂)

    这就是矩阵的魅力吗,爱了爱了 题 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #i ...

  4. HDU 5950 Recursive sequence(矩阵快速幂)

    题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...

  5. HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)

    题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...

  6. HDU 5950——Recursive sequence

    Recursive sequence 题意:给定起始的两个数a,b,求第n个数%mod 思路: 第一眼看出来是矩阵快速幂,不过当时没推出来(其实推了一半把自己给否定了) 正解是,根据二项式定理,对于f ...

  7. hdu 2842 Chinese Rings 矩阵快速幂

    分析: 后面的环能不能取下来与前面的环有关,前面的环不被后面的环所影响.所以先取最后面的环 设状态F(n)表示n个环全部取下来的最少步数 先取第n个环,就得使1~n-2个环属于被取下来的状态,第n-1 ...

  8. HDU - 4990 Reading comprehension(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:给出一段程序,进行优化后提交 题目分析:其实就是找规律,大水题一个,偶尔也是需要做做水题找找自信(逃) 先将题目中的程序拿下来,跑上100项,然后拿到oeis里找一下规律 ...

  9. HDU - 5015 233 Matrix(矩阵快速幂)

    题目链接:点击查看 题目大意:初始化:第一行依次为233,2333,23333....第一列依次为a0,a1,a2....(题目中会给出),再给出递推公式:,求矩阵中第n行m列的数字是多少 题目分析: ...

  10. 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里是不变的,可以数论分块,再在每一段里 ...

最新文章

  1. 2005年4月全国计算机等级考试二级C语言笔试试题及答案
  2. 51CTO论坛资料共享改版细分等您来!
  3. (2.10)备份与还原--利用T-SQL进行备份还原
  4. jsp简单练习-简单的下拉表单
  5. CoSENT:特征式匹配与交互式匹配有多大差距?
  6. boost::gregorian模块实现自出生以来的天数的测试程序
  7. 层和 native_React-Native与小程序的底层框架比较
  8. 选型OpenStack,需要谨防“舍本逐末”
  9. 如何在 ASP.NET MVC 中集成 AngularJS(3)
  10. 【Java线程池】Java线程池汇总,看这一篇文章就够了
  11. 抖音一个老人和一个机器人歌曲_一个老人孤独去世,一个老人安然离世
  12. python核心语法题_《Python核心编程》第3章笔记
  13. 一个神秘 URL 酿大祸,差点让我背锅!
  14. 基于python版本的谷歌GEE云计算平台使用,以DEM数据下载为例(GEE系列1)
  15. GIS专业/GIS方向需要考那些证书
  16. 关于 NM_CONTROLLED和Network Manager
  17. 【k哥爬虫普法】爬虫第一案,侵犯个人隐私,“入侵”短视频服务器!
  18. JM模型I帧帧内预测流程
  19. 生活品质-断舍离Day4
  20. macos docker挂载iso报failed to setup loop device: No such file or directory和mount: permission denied解决

热门文章

  1. 【大数据部落】用R语言进行网站评论文本挖掘聚类
  2. JAVA程序将PDF转化为TXT
  3. 顺序存储循环队列的基本操作
  4. 操作系统 第一部分 操作系统的基本概念
  5. python无法显示饼图
  6. python使用scipy模块from scipy.misc import imread时报错:cannot import name imread问题解决
  7. Linux网络编程和套接字
  8. 武汉科技大学计算机课程设置,武汉科技大学计算机控制与接口技术课程实施方案.docx...
  9. 2021-08-08 事务的提交,回滚
  10. 百度区块链 xuperchain 节点端 tps统计脚本