洛谷 模板題 快速冪(矩陣)

2021-10-23 17:03:16 字數 3219 閱讀 7945

南昌理工學院acm集訓隊

要說快速冪矩陣就要先談談快速冪了。

先上例題吧。(如果你會快速冪可以直接跳到下面的快速冪矩陣)

這道題是洛谷的p1226有興趣可以做一下。

從題目中可以看出他的指數非常大,所有我們肯定不能用直接求出b的值,但應為他要取餘乙個值

所以我們可以運用取餘運算的一些性質。

取餘運算有一些好用的性質,包括:

( a+

b)mo

db=(

amod

b+bm

odb)

modb

(a+b

)mod

b=(a

modb

+bmo

db)m

odb(a+b) \mod b = (a \mod b + b \mod b) \mod b(a+b)modb=(amodb+bmodb)modb

(a+b)m

odb=

(amo

db+b

modb

)mod

b(a+

b)mo

db=(

amod

b+bm

odb)

modb(a

×b)m

odb=

((am

odb)

×(bm

odb)

)mod

b(a×

b)mo

db=(

(amo

db)×

(bmo

db))

modb

(a×b) \mod b = ((a \mod b) × (b \mod b)) \mod b(a×b)modb=((amodb)×(bmodb))modb

(a×b)m

odb=

((am

odb)

×(bm

odb)

)mod

b(a×

b)mo

db=(

(amo

db)×

(bmo

db))

modb

快速冪運用的是取餘的第二個性質。

以題目的栗子為例:

直接上**吧。

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int maxt =

5e3+

50, mint =

150;

ll b, p, k;

//定義輸入的值

ll alg =1;

//定義記錄的答案

intmain()

cout << alg;

return0;

}

快速冪差不多就這麼多了,畢竟這也是模板>﹏<。

先上題目

題目鏈結p3390

快速冪(矩陣)與快速冪並沒有什麼不同,只是多了乙個矩陣相乘。

矩陣相乘我們以下面這個栗子來推導:

不難看出,矩陣c是由a的行和b的列中的每個值相乘再相加得出的,題目中的矩陣並不像a和b一樣是不同行列的矩陣相乘,題目中的矩陣可以說是乙個類似於正方形一樣的,每個值都可以找到固定的對應的值

在普通的乘法中,乙個數乘1還是等於它本身,在矩陣乘法中也有這麼乙個「1」,它就是單位矩陣

不同於普通乘法中的單位1,對於不同矩陣他們的單位矩陣大小是不同的對於nmn∗m的矩陣,它的單位矩陣大小為mmm∗m,對於mnm∗n的矩陣,它的單位矩陣大小為nnn∗n也就是說單位矩陣都是正方形的,這是因為只有正方形的矩陣能保證結果和前乙個矩陣形狀相同單位矩陣的元素非0即1,從左上角到右下角的對角線上元素皆為1,其他皆為0。

這一步很玄幻,大致的意思就是你的答案陣列在一開始將對角線的值換為1。

直接**中解釋吧( ̄▽ ̄)"

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int maxt =

1e9+

7, mint =

105;

int n;

long

long t;

//以結構體來存陣列,因為結構體可以直接相等

struct mmp cnt,sum;

//先定義輸入的陣列cnt和答案陣列sum

//定義的結構體函式

mmp sr

(mmp x, mmp y)}}

return a;

//輸出工具結構體

}int

main()

for(

int i =

1; i <= n; i++

)//這一步就是快速冪的過程,同上篇的快速冪一樣

while

(t >0)

//歡樂的輸出

for(

int i =

1; i <= n; i++

)return0;

}

快速冪(矩陣)與快速冪並沒有什麼不同,就是多了個矩陣相乘,都是模板題。

寫的不好,望各位大佬海涵(●』◡』●)。

完結撒花,ヾ( ̄▽ ̄)byebye

洛谷1962 矩陣快速冪模板

includeservo myservo la,myservo shou 分別代表兩個舵機 int value 0,flag1 0,sp 50 value即接收到的光強,sp代表舵機工作速度,flag1代表窗簾的開關情況,初始為0代表窗簾是開啟的 const int li low 100,li hi...

矩陣快速冪模板題

a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方陣a的內容。對應每組資料,輸出tr a ...

洛谷 P3390 模板 矩陣快速冪

時空限制1000ms 128mb 矩陣快速冪 給定n n的矩陣a,求a k.第一行,n,k 第2至n 1行,每行n個數,第i 1行第j個數表示矩陣第i行第j列的元素 輸出a k 共n行,每行n個數,第i行第j個數表示矩陣第i行第j列的元素,每個元素模10 9 7 2 1 1 11 1 1 1 1 1...