原题图:

看到这个题,首先想到的当然是暴力打表找规律了

表:

1  2

2  4

3  7

4  13

5  24

6  44

7  81

8  149

9  274

10  504

11  927

12  1705

13  3136

14  5768

15  10609

发现上下两个数近似于2倍关系,但f[i-1]*2略大于f[i]

用f[i-1]*2-f[i],发现恰好等于f[i-4]

于是就有了递推式:f[i]=f[i-1]*2-f[i-4]

矩阵加速即可

矩阵加速的方法:

我们有一个4*4的矩阵A和一个向量c[13,7,4,2],

我们要让c*A得到向量c1[13*2-2,13,7,4]

于是得到下面的矩阵:

2  1  0  0
0 0 1 0
0 0 0 1
-1 0 0 0

矩阵快速幂即可

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define MOD 19260817
#define int long long
int T,n,ans[]={,,,,};
struct Matrix{
int m[][];
} O,E,A;
inline Matrix Mul(Matrix X,Matrix Y){
Matrix Ans=O;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
Ans.m[i][j]=(Ans.m[i][j]+X.m[i][k]*Y.m[k][j])%MOD;
return Ans;
}
Matrix qpow(Matrix X,int k){
Matrix S=E;
while(k){
if(k&) S=Mul(S,X);
k>>=;
X=Mul(X,X);
}
return S;
}
#undef int
int main()
#define int long long
{
E.m[][]=E.m[][]=E.m[][]=E.m[][]=;
A.m[][]=;
A.m[][]=;
A.m[][]=;
A.m[][]=-;
A.m[][]=;
scanf("%lld",&T);
for(int i=;i<=T;i++){
scanf("%lld",&n);
if(n<=){
printf("%lld\n",ans[n]);
continue;
}
Matrix Ans=qpow(A,n-);
int ans=((Ans.m[][]*+Ans.m[][]*+Ans.m[][]*+Ans.m[][]*)%MOD+MOD)%MOD;
printf("%lld\n",ans);
}
return ;
}

【洛谷T37388】P哥破解密码的更多相关文章

  1. 洛谷 P4838 P哥破解密码 题解

    矩阵乘法 + 快速幂优化递推: 看到这个题目我们不难想到递推,题干中说3个连续的A出现在序列中是不合法的,所以可以分为三种情况: (1):序列前只有一个A,如:BA,BBA,BABA. (2):序列前 ...

  2. [洛谷P4838]P哥破解密码

    题目大意:求长度为$n$的$01$串中,没有连续至少$3$个$1$的串的个数 题解:令$a_1$为结尾一个$1$的串个数,$a_2$为结尾两个$1$的串的个数,$b$为结尾是$0$的串的个数.$a_1 ...

  3. P4838 P哥破解密码

    题目背景 P哥是一个经常丢密码条的男孩子. 在ION 8102赛场上,P哥又弄丢了密码条,笔试满分的他当然知道这可是要扣5分作为惩罚的,于是他开始破解ION Xunil系统的密码. 题目描述 定义一个 ...

  4. [Luogu] P4838 P哥破解密码

    题目背景 P哥是一个经常丢密码条的男孩子. 在ION 8102赛场上,P哥又弄丢了密码条,笔试满分的他当然知道这可是要扣5分作为惩罚的,于是他开始破解ION Xunil系统的密码. 题目描述 定义一个 ...

  5. 洛谷P2380 狗哥采矿

    P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是 ...

  6. 洛谷——P2383 狗哥玩木棒

    P2383 狗哥玩木棒 题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第 ...

  7. 洛谷 P2380 狗哥采矿

    题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少.最北边有blog ...

  8. 洛谷 P2383 狗哥玩木棒

    题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第一行是一个整数n表示测试 ...

  9. 洛谷 P1079 Vigen&#232;re 密码

    目录 题目 思路 \(Code\) 题目 P1079 Vigenère 密码 思路 字符串+模拟.仔细读题,然后仔细敲代码(说了和没说一样)... \(Code\) #include<iostr ...

随机推荐

  1. GitHub+Hexo+gulp搭建博客网站

    一.前期准备 1.注册GitHub账号. 不做说明 2.创建仓库 创建一个新的仓库来放置我们的文件. 3.下载安装Node.js https://nodejs.org/en/   两个版本,选择右边那 ...

  2. ksframework的xlua版本

    https://github.com/zhaoqingqing/KSFramework_xlua

  3. 1.3 js基础

    1.操作样式 .style  操作行间样式 .className  直接修改class   2.操作属性 .  操作已有的属性 []  点能做的方括号都能做,方括号里放字符串,能放变量.     3. ...

  4. PHP中break及continue两个流程控制指令解析

    <?php $arr = array( 'a' => '0a0', 'b' => '0b0', 'c' => '0c0', 'd' => '0d0', 'e' => ...

  5. 绘图神器-matplotlib入门

    这次,让我们使用一个非常有名且十分有趣的玩意儿来完成今天的任务,它就是jupyter. 一.安装jupyter matplotlib入门之前,先安装好jupyter.这里只提供最为方便快捷的安装方式: ...

  6. 【Linux】Linux系统启动过程

    1.Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 . 用户登录系统. 1.Linux系统的启动过程并不是大家想象 ...

  7. 拼凑的宿主-host

    开发两年之久,竟然不知道host这个词是什么意思.前些天有幸遇到了,就跟别人请教了.今天理絮一下.总比不知道强吧. 白话来说宿主就是一些框架运行机制运行时需要依赖的平台. 例如web开发常用的IIS, ...

  8. Hibernate=====HQL实用技术

    Hibernate支持三种查询语言:HQL查询.Criteria查询和原生SQL查询 HQL(hibernate Query Language,hibernate查询语言)是一种面向对象查询语言,其中 ...

  9. chosen下拉框插件的使用

    效果如下 第一步: 第二步: 根据HTML5规范, 通常在引入CSS和JS时不需要指明 type,因为 text/css 和 text/javascript 分别是他们的默认值. <link r ...

  10. stateless函数里面的参数问题

    UI组件文件: function Selector({ status1, status2, status3 }){ return (<div><span>demo</sp ...