矩阵快速幂优化递推
广义斐波那契数列
题目描述
广义的斐波那契数列是指形如
今给定数列的两系数
输入格式
输入包含一行六个整数,
输出格式
输出包含一行一个整数表示答案。
样例 #1
样例输入 #1
1 1 1 1 10 7
样例输出 #1
6
提示
数列第
【数据范围】
对于
#include <bits/stdc++.h>
using namespace std;
int p, q, a1, a2, n, mo;
struct matrix {
int n, m;
int z[3][3];
matrix() {
memset(z, 0, sizeof z);
}
} _, A;
matrix operator*(const matrix &x, const matrix &y) {
matrix z;
z.n = x.n;
z.m = y.m;
for (int i = 1; i <= z.n; i++)
for (int k = 1; k <= x.m; k++)
for (int j = 1; j <= z.m; j++)
z.z[i][j] = (z.z[i][j] + 1ll * x.z[i][k] * y.z[k][j] % mo) % mo;
return z;
}
int main() {
scanf("%d%d%d%d%d%d", &p, &q, &a1, &a2, &n, &mo);
p %= mo, q %= mo;
if (n == 1)printf("%d", a1 % mo), exit(0);
if (n == 2)printf("%d", a2 % mo), exit(0);
_.n = 2;
_.m = 1;
_.z[1][1] = a2;
_.z[2][1] = a1;
A.n = 2, A.m = 2;
A.z[1][1] = p, A.z[1][2] = q;
A.z[2][1] = 1, A.z[2][2] = 0;
int mi = n-2;
for (; mi; mi >>= 1, A = A * A)
if (mi & 1)_ = A * _;//左乘:注意A和_位置不能换
printf("%d", _.z[1][1]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!