洛谷 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,表示询问个数。
以下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 【模板】矩阵加速(数列)相关推荐
- 信息学奥赛一本通 1937:【06NOIP普及组】数列 | 洛谷 P1062 [NOIP2006 普及组] 数列
[题目链接] ybt 1937:[06NOIP普及组]数列 洛谷 P1062 [NOIP2006 普及组] 数列 [题目考点] 1. 数制 [解题思路] 如果k为2,那么这个数列 第1项为202^02 ...
- 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...
- 【bzoj3240 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法--然而我太弱了,一开始只想到了矩阵乘法的 ...
- 专题·树链剖分【including 洛谷·【模板】树链剖分
初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...
- 洛谷·【模板】点分树 | 震波【including 点分树
初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...
- 洛谷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,表示询 ...
- 【洛谷P3390】 矩阵快速幂(模板)
贴一下矩阵快速幂的模板 #include<iostream> #include<cstdio> #include<cstring> #include<stri ...
- 【洛谷 P5550】 Chino的数列【矩阵乘法】
解题思路 矩阵乘法呀 考虑构造一个操作矩阵 CC[1234]\begin{bmatrix} 1&2&3&4\\ \end{bmatrix}[1234] 首先把特殊情况s ...
- 洛谷 p3372 模板-线段树 1
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...
最新文章
- 同程旅游缓存系统(凤凰)打造Redis时代的完美平台实践
- python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...
- 养蛙游戏刷爆朋友圈,养蛙成功“反杀”传统手游?
- 交替最小二乘矩阵分解_使用交替最小二乘矩阵分解与pyspark建立推荐系统
- 吊打奔驰宝马!这个又贵又丑的“玩具”,为何让男人集体高潮?
- 力扣有没有java_力扣题解
- Unet美发实例分割,染发展示
- PhotoShop基础——如何抠图
- java实现数据库回滚,java 数据库操作,事宜回滚
- 【毕业设计6】基于51单片机的红外避障小车
- 专题:固体力学中应力与应变分析详解(4.应力张量的转换)
- idea在 keymap下的eclipse的快捷键
- UVA815 洪水Flooded
- toft 测试用例rat_TD-LTE终端测试规范——通信功能和性能分册(上).pdf
- 中标麒麟编译qgis源码+PyQt环境
- android 脸部识别之3D,这两款安卓手机也支持3D结构光人脸识别
- 三菱伺服调试软件MR-j2-CT
- 期末小结(一). 专业技术
- Android Studio 与sdk下载安装
- zookeeper Java客户端API的使用方法
热门文章
- mysql导入三个基本表_mysql 基础导入导出
- mysql 酒店管理设计_酒店管理系统的设计与实现(Myeclipse,MySQL)
- golang 泛型_Golang 1.x版本泛型编程
- 深度学习pytorch--softmax回归(二)
- Pytorch代码函数笔记
- 【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】
- python发送邮件outlook_通过Python发送Outlook电子邮件?
- C语言数据类型从计算机原理的角度是怎样看待的?
- 姓名和学号 c语言,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
- linux内核之旅ppt_微软Windows 10防病毒现已可用Linux上