<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.33dai.wiki/index.php?action=history&amp;feed=atom&amp;title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF%2F05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82</id>
	<title>05-算法模板/05-矩阵快速幂 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.33dai.wiki/index.php?action=history&amp;feed=atom&amp;title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF%2F05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82"/>
	<link rel="alternate" type="text/html" href="https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;action=history"/>
	<updated>2026-05-20T22:29:51Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=353&amp;oldid=prev</id>
		<title>33DAI：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=353&amp;oldid=prev"/>
		<updated>2026-05-20T18:12:11Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年5月20日 (三) 18:12的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans-CN&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-352:rev-353 --&gt;
&lt;/table&gt;</summary>
		<author><name>33DAI</name></author>
	</entry>
	<entry>
		<id>https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=352&amp;oldid=prev</id>
		<title>-&gt;Importer：​批量导入三三文档</title>
		<link rel="alternate" type="text/html" href="https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=352&amp;oldid=prev"/>
		<updated>2026-05-20T16:50:33Z</updated>

		<summary type="html">&lt;p&gt;批量导入三三文档&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年5月20日 (三) 16:50的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans-CN&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-253:rev-352 --&gt;
&lt;/table&gt;</summary>
		<author><name>-&gt;Importer</name></author>
	</entry>
	<entry>
		<id>https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=253&amp;oldid=prev</id>
		<title>33DAI：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=253&amp;oldid=prev"/>
		<updated>2026-05-20T16:25:35Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年5月20日 (三) 16:25的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans-CN&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-252:rev-253 --&gt;
&lt;/table&gt;</summary>
		<author><name>33DAI</name></author>
	</entry>
	<entry>
		<id>https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=252&amp;oldid=prev</id>
		<title>-&gt;Importer：​批量导入三三文档</title>
		<link rel="alternate" type="text/html" href="https://www.33dai.wiki/index.php?title=05-%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/05-%E7%9F%A9%E9%98%B5%E5%BF%AB%E9%80%9F%E5%B9%82&amp;diff=252&amp;oldid=prev"/>
		<updated>2026-05-20T16:22:29Z</updated>

		<summary type="html">&lt;p&gt;批量导入三三文档&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== 模板 ==&lt;br /&gt;
&lt;br /&gt;
[https://oj.33dai.cn/p/P1939 P1939. 矩阵加速（数列）]&lt;br /&gt;
&lt;br /&gt;
已知一个数列 &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;，满足：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_x=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
 1 &amp;amp; x \in\{1,2,3\}\\&lt;br /&gt;
 a_{x-1}+a_{x-3} &amp;amp; x \geq 4&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
求 &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; 数列的第 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; 项对 &amp;lt;math&amp;gt;10^9+7&amp;lt;/math&amp;gt; 取余的值。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;bits/stdc++.h&amp;gt;&lt;br /&gt;
#define int long long&lt;br /&gt;
using namespace std;&lt;br /&gt;
const int MAXR = 3, MAXC = 3;&lt;br /&gt;
int MOD = 1000000000 + 7;&lt;br /&gt;
&lt;br /&gt;
struct Mat&lt;br /&gt;
{&lt;br /&gt;
    int r, c;&lt;br /&gt;
    int m[MAXR + 1][MAXC + 1];&lt;br /&gt;
    Mat() { memset(m, 0, sizeof(m)); }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Mat operator*(const Mat &amp;amp;a, const Mat &amp;amp;b)&lt;br /&gt;
{&lt;br /&gt;
    assert(a.c == b.r);&lt;br /&gt;
    Mat res;&lt;br /&gt;
    res.r = a.r, res.c = b.c;&lt;br /&gt;
    for (int i = 1; i &amp;lt;= a.r; i++)&lt;br /&gt;
        for (int k = 1; k &amp;lt;= a.c; k++)&lt;br /&gt;
        {&lt;br /&gt;
            int temp = a.m[i][k];&lt;br /&gt;
            for (int j = 1; j &amp;lt;= b.c; j++)&lt;br /&gt;
                res.m[i][j] = (res.m[i][j] + temp * b.m[k][j]) % MOD;&lt;br /&gt;
        }&lt;br /&gt;
    return res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Mat quick_pow(Mat a, int b)&lt;br /&gt;
{&lt;br /&gt;
    assert(a.r == a.c);&lt;br /&gt;
    Mat res;&lt;br /&gt;
    res.r = res.c = a.r;&lt;br /&gt;
    for (int i = 1; i &amp;lt;= res.r; i++)&lt;br /&gt;
        res.m[i][i] = 1;&lt;br /&gt;
    while (b &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        if (b % 2)&lt;br /&gt;
            res = res * a;&lt;br /&gt;
        a = a * a;&lt;br /&gt;
        b = b / 2;&lt;br /&gt;
    }&lt;br /&gt;
    return res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
signed main()&lt;br /&gt;
{&lt;br /&gt;
    ios::sync_with_stdio(false);&lt;br /&gt;
    cin.tie(0);&lt;br /&gt;
    int T;&lt;br /&gt;
    cin &amp;gt;&amp;gt; T;&lt;br /&gt;
    Mat now;&lt;br /&gt;
    now.r = 1, now.c = 3;&lt;br /&gt;
    now.m[1][1] = 1, now.m[1][2] = 1, now.m[1][3] = 1;&lt;br /&gt;
    Mat ans;&lt;br /&gt;
    ans.r = ans.c = 3;&lt;br /&gt;
    ans.m[1][1] = 0, ans.m[1][2] = 0, ans.m[1][3] = 1;&lt;br /&gt;
    ans.m[2][1] = 1, ans.m[2][2] = 0, ans.m[2][3] = 0;&lt;br /&gt;
    ans.m[3][1] = 0, ans.m[3][2] = 1, ans.m[3][3] = 1;&lt;br /&gt;
    while (T--)&lt;br /&gt;
    {&lt;br /&gt;
        int x;&lt;br /&gt;
        cin &amp;gt;&amp;gt; x;&lt;br /&gt;
        Mat ans_ = quick_pow(ans, x - 1);&lt;br /&gt;
        Mat now_ = now * ans_;&lt;br /&gt;
        cout &amp;lt;&amp;lt; now_.m[1][1] % MOD &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 使用说明 ==&lt;br /&gt;
&lt;br /&gt;
1. 根据递推式构造&amp;#039;&amp;#039;&amp;#039;转移矩阵&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;ans&amp;lt;/code&amp;gt;（方阵）和&amp;#039;&amp;#039;&amp;#039;初始向量&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;now&amp;lt;/code&amp;gt;（一行多列的矩阵）&lt;br /&gt;
2. 调用 &amp;lt;code&amp;gt;quick_pow(转移矩阵, 幂次)&amp;lt;/code&amp;gt; 进行矩阵快速幂&lt;br /&gt;
3. &amp;lt;code&amp;gt;now * ans_pow&amp;lt;/code&amp;gt; 得到结果向量&lt;br /&gt;
&lt;br /&gt;
时间复杂度：&amp;lt;math&amp;gt;O(k^3 \log n)&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为矩阵大小。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:算法模板]]&lt;br /&gt;
[[Category:三三文档]]&lt;/div&gt;</summary>
		<author><name>-&gt;Importer</name></author>
	</entry>
</feed>