00:00:00
矩阵快速幂 笔记
一、简单介绍
一个
那么就可以用快速幂求矩阵幂了。
二、简单应用
1. P1962 斐波那契数列
, ,求 。
我们假设矩阵
矩阵快速幂解决即可。
2. 数列
, ,求 。
同理,假设矩阵
由于:
所以:
3. CF691E Xor-sequences
给定一个数集
,现在你需要构造一个长度为 的序列 ,序列 的元素从数集 中任意挑选,要求 中任意相邻的两个数字的异或值二进制表示中 的个数是 的倍数,求方案数,对 取模。
, 。
设
最终答案即为
考虑优化,由于每一个
假设
cpp
matrix b(n, n, false);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) b.d[i][j] = check(a[i], a[j]);
b = pow_matrix(b, k - 1);
int ans = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) ans = (ans + b.d[i][j]) % mod;
cout << ans;4. P3176 [HAOI2015] 数字串拆分
本文原在 2025-04-07 18:03 发布于本人洛谷博客。
由于
那么构造矩阵
由初中数学知识,
但是
最终答案即为
忽略矩阵乘法,求