就算告诉我是矩阵快速幂我也推不出递推式呀!!!

官方题解:

对于任意i>=1,当j>=3时,有通过归纳法可以得到

进而推导出

后来自己重新推导了一遍

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std; typedef long long ll;
const ll Mod=1e9+7;
const int msize=2;
const int N=4; struct Mat
{
ll mat[N][N];
}; Mat operator *(Mat a, Mat b)
{
Mat c;
memset(c.mat, 0, sizeof(c.mat));
for(int k = 0; k < msize; ++k)
for(int i = 0; i < msize; ++i)
if(a.mat[i][k])
for(int j = 0; j < msize; ++j)
if(b.mat[k][j])
c.mat[i][j] = (c.mat[i][j] +a.mat[i][k] * b.mat[k][j])%Mod;
return c;
} Mat operator ^(Mat a, ll k)
{
Mat c;
memset(c.mat,0,sizeof(c.mat));
for(int i = 0; i < msize; ++i)
c.mat[i][i]=1;
for(; k; k >>= 1)
{
if(k&1) c = c*a;
a = a*a;
}
return c;
} Mat operator -(Mat a,Mat b)
{
for(int i=0; i<msize; i++)
for(int j=0; j<msize; j++)
a.mat[i][j]=(a.mat[i][j]-b.mat[i][j])%Mod;
return a;
} int main()
{
// freopen("in.txt","r",stdin);
int t;
ll n,m;
Mat A,B1,B2;
A.mat[0][0]=1,A.mat[0][1]=2;
A.mat[1][0]=1,A.mat[1][1]=0;
B1.mat[0][0]=B1.mat[1][1]=1;
B1.mat[0][1]=B1.mat[1][0]=0;
B2.mat[0][0]=0,B2.mat[0][1]=2;
B2.mat[1][0]=1,B2.mat[1][1]=-1;
scanf("%d",&t);
while(t--)
{
scanf("%I64d%I64d",&n,&m);
Mat ans;
if(n%2==0) ans=((A^n)-B1)^(m-1);
else ans=((A^n)-B2)^(m-1);
printf("%I64d\n",(ans.mat[1][0]+ans.mat[1][1])%Mod);
}
return 0;
}

最新文章

  1. webapi8
  2. 1-学习前言&amp;C语言概述
  3. Java内部DNS查询实现和参数设置
  4. 提取SD卡中的图片
  5. JS基础----&gt;js中ajax的使用
  6. html 表格中文字的背景色
  7. 为每个页面加上Session判断 转
  8. openvswitch安装、基本操作
  9. JDK中的Atomic包中的类及使用
  10. C语言面试题分类-&gt;字符串处理
  11. for 循环,如果判断那里用到了一个函数,每次循环一次都会调用一次函数,如图
  12. npm ERR! File exists: /XXX/xxx npm ERR! Move it away, and try again.
  13. day24
  14. java -version显示版本和JAvA_HOME配置不一样
  15. springboot定时任务处理
  16. crontab 相关
  17. App架构师实践指南一之App基础语法
  18. nexus(Maven仓库私服)的安装、配置、使用和仓库迁移
  19. lombok 转载
  20. python3安装crypto出错,及解决方法

热门文章

  1. 使用find命令查找大文件
  2. 更换介质:请把标有Debian ... 的盘片插入驱动器
  3. OSI七层模型与TCP/IP五层模型-(转自钛白Logic)
  4. VMWare虚拟机显示模块“Disk”启动失败
  5. 【六】K8s-Pod 水平自动扩缩实践(简称HPA)
  6. Objective Evaluation Index of image
  7. 如何实现一个简易版的 Spring - 如何实现 AOP(下)
  8. Go语言协程并发---条件变量
  9. anaconda同时集成Python2 和 Python3
  10. 向Relay添加算子