当前位置: 首页 > news >正文

《P1939 矩阵加速(数列)》

题目描述

已知一个数列 a,它满足:

ax​={1ax−1​+ax−3​​x∈{1,2,3}x≥4​

求 a 数列的第 n 项对 109+7 取余的值。

输入格式

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

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

输出格式

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

输入输出样例

输入 #1复制

3 6 8 10

输出 #1复制

4 9 19

说明/提示

  • 对于 30% 的数据 n≤100;
  • 对于 60% 的数据 n≤2×107;
  • 对于 100% 的数据 1≤T≤100,1≤n≤2×109。

代码实现:

#include <cstdio> #include <iostream> using namespace std; #define INF 1000000007 long long n, q[105]; struct mat{ long long m[3][3]; int sz; }; mat mul(mat a, mat b) { mat res; for(int i=0;i<3;i++) for(int j=0;j<3;j++) res.m[i][j]=0; for(int i=0;i<3;i++) for(int j=0;j<a.sz;j++) for(int k=0;k<3;k++) res.m[i][j]=((res.m[i][j]%INF)+(a.m[k][j]%INF)*(b.m[i][k]%INF))%INF; res.sz=a.sz; return res; } void qpow(long long x) { mat t, ans; ans.sz=1; t.sz=3; ans.m[0][0]=ans.m[1][0]=ans.m[2][0]=1; for(int i=0;i<3;i++) for(int j=0;j<3;j++) t.m[i][j]=0; t.m[0][0]=t.m[0][2]=t.m[1][0]=t.m[2][1]=1; while(x) { if(x&1) ans=mul(ans, t); t=mul(t, t); x>>=1; } cout<<ans.m[0][0]%INF<<endl; } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>q[i]; for(int i=1;i<=n;i++) { if(q[i]<=3) {cout<<1<<endl;continue;} qpow(q[i]-3); } return 0; }
http://www.jsqmd.com/news/285665/

相关文章:

  • cdn哪家好
  • 使用 Python 脚本自动化管理 Docker 容器:启动、修改密码、删除及系统资源监控
  • 从DEM到等高线:手撕矢量与栅格两种地形表达
  • 智表ZCELL产品V3.5 版发布,新增行列选中操作等功能
  • 自定义广播数据实现网络冲突自检中的问题
  • 深入解析:量化血流动力学新时代:以数据驱动重构临床决策的精准与高效
  • 整数、浮点数的内存中存储
  • AlexNet 迁移学习实战:CIFAR-10 图像分类实验 - 指南
  • element-ui table高度自适应实现分享
  • Linux Rootkit 手法解析(下):深入内核态的“隐形”攻防战
  • Linux Rootkit 手法解析(上):用户态的“隐身术”与检测思路
  • TikTok矩阵工具实操指南:分主体适配与落地流程拆解
  • 人群仿真软件:Pathfinder_(3).人群建模与行为设置
  • 人群仿真软件:Pathfinder_(2).Pathfinder的基本功能与操作
  • FastAPI系列(02):第一个示例
  • DeepSeek+Cursor封神指南:AI驱动编码全流程实战(含代码精解)
  • 心愈语伴:DeepSeek+Qwen2.5打造专属情感聊天工具全教程
  • 2026年会议纪要工具top9_工具_测评_ASR
  • Vue3+Cesium教程(38)--动态雾浓度、颜色
  • 一天一个Python库:requests - 简单好用的HTTP请求库
  • Vue3+Cesium教程(37)--下雪啦!动态设置降雪效果
  • 星瞳OpenMV官方机械臂教程|从零开始:Robot Arm机械臂快速上手
  • 【docker部署milvus向量库和可视化界面attu】
  • PX4中关于GPS质量检测和相关控制参数
  • PX4导航遇到GPS数据丢失的处理和相关控制参数
  • Java小白求职者面试:从Spring Boot到微服务架构设计的问答解析
  • day162—递归—买卖股票的最佳时机Ⅱ(LeetCode-122)
  • day163—递归—买卖股票的最佳时机含冷冻期(LeetCode-309)
  • Jupyter Notebook的5个实用技巧,可视化模型训练过程
  • send-proxy vs send-proxy-v2 vs send-proxy-v2-ssl