题目描述

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

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

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

输入输出格式

输入格式:

第一行一个整数T,表示询问个数。

以下T行,每行一个正整数n。

输出格式:

每行输出一个非负整数表示答案。

输入输出样例

输入样例#1:

3
6
8
10

输出样例#1:

4
9
19

说明

对于30%的数据 n<=100;

对于60%的数据 n<=2*10^7;

对于100%的数据 T<=100,n<=2*10^9;

题解:

其实这篇本来想写日记的,但是老师突然来到了我的身边,我就迅速把这道刚做完的题粘到了这里。

有始有终,就写吧。

谁可以告诉我,为什么我的暴力没有分!

众人OS:你错了呗。

#include <cstdio>
#include <cstring>
using namespace std;typedef long long LL;
const int mod=1e9+7;
int T, n;
LL tmp[3][3]={{0,0,1},{1,0,0},{0,1,1}};struct Matrix33{LL mat[3][3];Matrix33 operator *(Matrix33 b){Matrix33 m;for (int i=0; i<3; ++i) for (int j=0; j<3; ++j){m.mat[i][j]=0;for (int k=0; k<3; ++k)m.mat[i][j]=(m.mat[i][j]+(mat[i][k]*b.mat[k][j]%mod))%mod;}return m;}
}beg, unit, plus;Matrix33 get_mat(int n){memcpy(plus.mat, tmp, sizeof(tmp));Matrix33 ans=unit;while (n){if (n&1) ans=ans*plus;plus=plus*plus;n>>=1;}return ans;
}int main(){unit.mat[0][0]=unit.mat[1][1]=unit.mat[2][2]=1;beg.mat[0][0]=beg.mat[0][1]=beg.mat[0][2]=1;scanf("%d", &T);for (int tt=0; tt<T; ++tt){scanf("%d", &n);if (n<4) printf("1\n");else printf("%lld\n", (beg*get_mat(n-3)).mat[0][2]);}return 0;
}

AC

一世安宁

转载于:https://www.cnblogs.com/GTBA/p/9441336.html

洛谷 P1939 【模板】矩阵加速(数列)相关推荐

  1. 信息学奥赛一本通 1937:【06NOIP普及组】数列 | 洛谷 P1062 [NOIP2006 普及组] 数列

    [题目链接] ybt 1937:[06NOIP普及组]数列 洛谷 P1062 [NOIP2006 普及组] 数列 [题目考点] 1. 数制 [解题思路] 如果k为2,那么这个数列 第1项为202^02 ...

  2. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  3. 【bzoj3240 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法--然而我太弱了,一开始只想到了矩阵乘法的 ...

  4. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  5. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  6. 洛谷P1939 【模板】矩阵加速(数列)

    题目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值. 输入格式 第一行一个整数T,表示询 ...

  7. 【洛谷P3390】 矩阵快速幂(模板)

    贴一下矩阵快速幂的模板 #include<iostream> #include<cstdio> #include<cstring> #include<stri ...

  8. 【洛谷 P5550】 Chino的数列【矩阵乘法】

    解题思路 矩阵乘法呀 考虑构造一个操作矩阵 CC[1234]\begin{bmatrix} 1&2&3&4\\ \end{bmatrix}[1​2​3​4​] 首先把特殊情况s ...

  9. 洛谷 p3372 模板-线段树 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

最新文章

  1. 同程旅游缓存系统(凤凰)打造Redis时代的完美平台实践
  2. python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...
  3. 养蛙游戏刷爆朋友圈,养蛙成功“反杀”传统手游?
  4. 交替最小二乘矩阵分解_使用交替最小二乘矩阵分解与pyspark建立推荐系统
  5. 吊打奔驰宝马!这个又贵又丑的“玩具”,为何让男人集体高潮?
  6. 力扣有没有java_力扣题解
  7. Unet美发实例分割,染发展示
  8. PhotoShop基础——如何抠图
  9. java实现数据库回滚,java 数据库操作,事宜回滚
  10. 【毕业设计6】基于51单片机的红外避障小车
  11. 专题:固体力学中应力与应变分析详解(4.应力张量的转换)
  12. idea在 keymap下的eclipse的快捷键
  13. UVA815 洪水Flooded
  14. toft 测试用例rat_TD-LTE终端测试规范——通信功能和性能分册(上).pdf
  15. 中标麒麟编译qgis源码+PyQt环境
  16. android 脸部识别之3D,这两款安卓手机也支持3D结构光人脸识别
  17. 三菱伺服调试软件MR-j2-CT
  18. 期末小结(一). 专业技术
  19. Android Studio 与sdk下载安装
  20. zookeeper Java客户端API的使用方法

热门文章

  1. mysql导入三个基本表_mysql 基础导入导出
  2. mysql 酒店管理设计_酒店管理系统的设计与实现(Myeclipse,MySQL)
  3. golang 泛型_Golang 1.x版本泛型编程
  4. 深度学习pytorch--softmax回归(二)
  5. Pytorch代码函数笔记
  6. 【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】
  7. python发送邮件outlook_通过Python发送Outlook电子邮件?
  8. C语言数据类型从计算机原理的角度是怎样看待的?
  9. 姓名和学号 c语言,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
  10. linux内核之旅ppt_微软Windows 10防病毒现已可用Linux上