题目描述

a[1]=a[2]=a[3]=1

a[x]=a[x-3]+a[x-1] (x>3)

求a数列的第n项对1000000007(10^9+7)取余的值。

题目解析

顺序:x.x,y.y,x.y

Code

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int MOD = 1000000007;struct Matrix {long long m[10][10];int sx,sy;
} str,pro;long long n;void init() {str.m[1][1] = str.m[1][2] = str.m[1][3] = 1;str.sx = 1;str.sy = 3;pro.m[1][1] = pro.m[1][2] = pro.m[2][2] = pro.m[2][3] = pro.m[3][1] = 0;pro.m[1][3] = pro.m[2][1] = pro.m[3][2] = pro.m[3][3] = 1;pro.sx = pro.sy = 3;return;
}inline Matrix mul(Matrix a,Matrix b) {Matrix res;memset(res.m,0,sizeof(res.m));for(int i = 1;i <= a.sx;i++) {for(int j = 1;j <= b.sy;j++) {for(int k = 1;k <= b.sx;k++) {res.m[i][j] += a.m[i][k] * b.m[k][j] % MOD;res.m[i][j] %= MOD;}}}res.sx = a.sx, res.sy = b.sy;return res;
}inline Matrix quick_pow(Matrix x,long long y) {Matrix res;res.sx = str.sx;res.sy = str.sy;for(int i = 1;i <= 5;i++) {for(int j = 1;j <= 5;j++) {res.m[i][j] = (i==j);}}while(y) {if(y & 1) res = mul(res,x);x = mul(x,x);y >>= 1;}return res;
}int main() {int T;scanf("%d",&T);while(T--) {scanf("%lld",&n);init();if(n <= 3) {puts("1");continue;}Matrix ans = mul(str,quick_pow(pro,n));printf("%lld\n",ans.m[1][3]);}return 0;
}

转载于:https://www.cnblogs.com/floatiy/p/9772496.html

[Luogu] P1939 【模板】矩阵加速(数列)相关推荐

  1. 矩阵小专题(矩阵快速幂+矩阵加速)

    1.什么是矩阵? 矩阵(数学术语)_百度百科 2.矩阵快速幂 首先要知道,只有n*n的矩阵能乘以自身(否则不符合矩阵相乘的条件) 然后要明白普通的快速幂的原理(本质是把幂次二分,代码如下) inlin ...

  2. 矩阵快速幂(矩阵加速)

    //南昌理工ACM集训队 放心食用 矩阵加速 快速幂(前置技能) 矩阵快速幂 可乐 附个模板 最后小结 本人小白如有不对欢迎指正ლ(╹◡╹ლ) 矩阵加速 快速幂(前置技能) 对于普通的求a的b次方,一 ...

  3. 【AC自动机】【矩阵加速】BZOJ4861魔法咒语

    分析: 巨恶心的一题双代码题. 对于前半部分,把禁止出现的字符串建一颗AC自动机. 然后枚举每个位置用了某个模板串后转移到哪里. 然后直接DP即可. 但是对于后半部分数据,则必须写一个矩阵加速... ...

  4. [CQOI2018] 交错序列(矩阵加速优化dp)

    problem luogu-P4456 solution 预处理阶乘和阶乘的逆元,枚举 111 出现次数 iii,∑(n−i+1i)(n−i)aib\sum\binom{n-i+1}{i}(n-i)^ ...

  5. 线性代数四之动态DP(广义矩阵加速)——Can you answer these queries III,保卫王国

    动态DP--广义矩阵加速 SP1716 GSS3 - Can you answer these queries III description solution code [NOIP2018 提高组] ...

  6. 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路

    状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...

  7. 线性代数二之矩阵加速DP——数学作业,Arc of Dream

    矩阵加速 数学作业 description solution code Arc of Dream description solution code 数学作业 description solution ...

  8. 【codevs2304】【BZOJ1875】HH去散步,第一次的矩阵加速DP

    传送门1 传送门2 写在前面:今天冒傻气 思路:我第一眼没有看出来它是个矩阵乘法加速DP,只觉得如果这个t小点就直接广搜可以了,后来发现网上的题解无一例外都是矩阵快速幂的时候,我的表情 后来看了看黄学 ...

  9. yolov5 6.1官方模板TensorRT加速保姆级图文教程

    加速的基础流程今年春季已经写好了,可以完美复现加速. 需要补充的是运行export.py的报错,加一句: pip install onnx 这会写教程的时候,电脑是昨天新做的系统,没有python以及 ...

  10. ZZH与计数(矩阵加速,动态规划,记忆化搜索)

    题面 因为出题人水平很高,所以这场比赛的题水平都很高. ZZH 喜欢计数. ZZH 有很多的数,经过统计,ZZH一共有 v0v_0v0​ 个 0 ,v1v_1v1​ 个 1,-,v2n−1v_{2^n ...

最新文章

  1. php跳转传值,php如何跳转页面并传值?
  2. 【C语言】C语言实现面向对象编程之封装
  3. 新疆自考大专计算机应用专业,新疆大学2017年新疆自考计算机信息管理(专科)考试计划...
  4. 程序员面试金典 - 面试题 16.03. 交点(数学)
  5. logstash-input-redis源码解析
  6. UpdataPanel学习之 RenderMode
  7. linux云服务器上安装JDK
  8. 神奇的编码C语言,神奇的fans (C语言代码)
  9. minikube start 使用Hyper-V
  10. Linux知识积累(2)dirname的使用方法
  11. python右对齐函数_Python这68个内置函数,建议你吃透!
  12. Win32环境下的Tomcat5.5.17与apache2.2的集群
  13. 用Notepad2替换Windows自带记事本
  14. 如何卸载mingw_MinGW和MSYS的自动安装
  15. 【Unity性能优化】ASTC压缩格式(Android)
  16. regeneratorRuntime is not defined
  17. 2016年东莞市小学生信息学竞赛试题 17倍
  18. 阿里云盘 Mac客户端(附mac/win版)v2.1.6中文内测版
  19. 我不要我觉得,我要你觉得--如何根据企业研发的现状实施DevOps
  20. 可靠传输的实现机制——回退N帧协议GBN(Go Back N)

热门文章

  1. .Net开发人员应该下载的十种必备工具(一)
  2. [Redux/Mobx] Context api可以取代Redux吗?为什么?
  3. Taro+react开发(50) 小程序触底操作
  4. [html] 使用svg画一个爱心
  5. [css] 如何使用CSS的多列布局?
  6. 前端学习(2761):uni-app样式的学习
  7. 前端学习(2581):单元测试的重要性
  8. 工作总结14:路径错误
  9. 前端学习(2137):webpack的介绍和安装
  10. oracle之单行函数2