原题图:

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

表:

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. (转)Shell全局变量、局部变量与特殊变量笔记总结

    Shell全局变量.局部变量与特殊变量笔记总结 原文:http://blog.csdn.net/apollon_krj/article/details/70148022 变量类型:全局变量(环境变量) ...

  2. 关于重定向printf出错 Error[Pe020]: identifier "FILE" is undefined 解决方案

    IAR或者Keil用到重定向printf函数出现的错误解决方案 转发请注明出处,谢谢 原创:李剀 https://www.cnblogs.com/kevin-nancy/articles/105851 ...

  3. WPF 父子窗体联动

    问题: 近段时间,由于项目上的一些原因,设计到在WPF项目使用引用COM组件的问题,部分WPF元素浮动在COM组件之上,并且实现拖.停靠.放大等功能(子窗体不要求等比缩放,只要位置跟随主窗体即可),如 ...

  4. WPF 窗体在Alt+Tab中隐藏

    问题: 近段时间由于项目上的需求,需要在WPF中使用COM组件,并且由于软件界面设计等等原因,需要将部分控件显示在COM组件之上,由于WindowsFormsHost的一些原因,导致继承在WPF中的W ...

  5. JS常用的设计模式(6)——桥接模式

    桥接模式的作用在于将实现部分和抽象部分分离开来, 以便两者可以独立的变化.在实现api的时候, 桥接模式特别有用.比如最开始的singleton的例子. var singleton = functio ...

  6. [转]v$parameter, v$parameter2, v$system_parameter, v$system_parameter2, v$spparameter区别

    本文转自:http://blog.csdn.net/huang_xw/article/details/617389 1 v$parameter v$parameter显示的是session级的参数. ...

  7. linux服务器时间自动同步

    最常用的是 rdate 服务 安装(centOs为例): yum install -y rdate 用法: rdate -s time-b.nist.gov 执行完以上方法时间就同步了.有的服务器隔一 ...

  8. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  9. java面试知识

    Java基础部分 https://www.cnblogs.com/xiaolovewei/p/9571770.html MySQL部分 https://www.cnblogs.com/xiaolove ...

  10. MySQL远程连接:Host 'x' is not allowed to connect to this MySQL server

    远程连接MySQL时发现如下错误: java.sql.SQLException: null, message from server: "Host '192.168.30.23' is no ...