news 2026/2/16 13:08:31

《P1939 矩阵加速(数列)》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《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; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/10 4:13:27

【2026年-03期】Collaborative evolution between AI and humans

这是一幅关于 AI 与人类协作进化的逻辑全景图&#xff0c;它梳理了从 AI 技术迭代到人类能力重塑&#xff0c;再到二者形成新协作模式的完整逻辑链条。AI 演进与人类能力的底层逻辑AI 演进的双轮驱动AI 演化速度&#xff1a;从 GPT-3 → GPT-4 → GPT-5&#xff0c;模型能力不断…

作者头像 李华
网站建设 2026/2/16 8:08:31

边界之内:为何高维内插无法催生下一次科学革命?

在一个被大数据和人工智能的承诺所笼罩的时代&#xff0c;一种信念日益深入人心&#xff1a;只要有足够的数据和强大的算法&#xff0c;我们就能自动解锁自然界最深邃的奥秘。机器学习模型在蛋白质折叠、材料发现和气候预测等领域取得的惊人成就&#xff0c;似乎都在为这一愿景…

作者头像 李华
网站建设 2026/2/14 3:27:07

Spring Boot 三种方式登录系统:集成微信扫码、短信验证码、邮箱验证码

Spring Boot 三种方式登录系统&#xff1a;集成微信扫码、短信验证码、邮箱验证码&#xff08;含高并发与安全增强&#xff09; 主要因为前面的帖子不太完整。 一、引言 在现代 Web 应用中&#xff0c;提供多种灵活、安全的登录方式已成为标配。本文档旨在提供一套生产就绪的…

作者头像 李华
网站建设 2026/2/6 12:49:20

HTML5 与 H5:别再让你的专业度在称呼中流失

在中国互联网行业的日常交流中&#xff0c;很少有一个词像“H5”这样被高频使用&#xff0c;却又被如此普遍地误解。当你听到有人说“做一个 H5”时&#xff0c;对方指的往往是一个在微信朋友圈传播的精美幻灯片&#xff0c;或者是一个简单的营销小游戏。然而&#xff0c;当你打…

作者头像 李华
网站建设 2026/2/12 8:39:17

3-VueAjax

什么是Vue Vue是一款用于构建用户界面的渐进式的JavaScript框架。官方网站&#xff1a;https://cn.vuejs.org/ 前端负责将数据以美观的样式呈现出来&#xff0c;而数据最终又要在数据库服务器中存储并管理。前端想要拿到数据&#xff0c;就需要请求服务器。然后服务器将数据返…

作者头像 李华
网站建设 2026/2/7 10:22:22

基于springBoot的房屋租赁管理系统

房屋租赁管理系统的背景意义 市场需求驱动 随着城市化进程加快&#xff0c;流动人口增多&#xff0c;房屋租赁需求持续增长。传统租赁方式依赖中介或线下沟通&#xff0c;效率低且信息不透明。数字化管理系统能优化流程&#xff0c;提升供需匹配效率&#xff0c;降低交易成本…

作者头像 李华