NOI2013 矩陣遊戲

2021-09-03 01:24:45 字數 2367 閱讀 6739

題意:對於乙個n行m列的矩陣,第i行第j列的元素為f[i][j]。已知a, b, c, d,並且矩陣元素滿足:

f[1][1] = 1

f[i,j] = a * f[i][j-1] + b (j!=1)

f[i,1] = c * f[i-1][m] + d (i!=1)

求f[n][m] 答案對1e9 + 7取模

1 <= n, m <= 1e1000000

1 <= a, b, c, d <= 1e9

這道題一眼看上去非常的矩陣快速冪

好像沒毛病?

看了眼資料量 哭遼

沒關係 我可以10000進製快速冪!(看起來很穩

那就寫一寫?

// luogu-judger-enable-o2

#include

#include

#include

#include

#include

#include

#pragma gcc optimize("ofast,no-stack-protector")

using

namespace std;

const

int n =

(int

)1e6+5

;const

int m =

1e3;

const

long

long p =

1e9+7;

inline

long

long

mod(

long

long x)

struct matrix

}next1, next2, stot, tot;

inline matrix operator*(

const matrix& x,

const matrix& y)

char n[n]

, m[n]

, tn[n]

, tm[n]

;long

long a, b, c, d;

inline

void

init()

inline matrix qqp

(matrix x,

int y)

return res;

}inline matrix qpow

(matrix x,

int len,

char

* y)

return res;

}inline

void

debug

(matrix x)

intmain

(int argc,

char

*argv)

for(

int i = lm -

1; i >=0;

--i)

if(m[i]

=='0'

) m[i]

='9'

;else

int it;

for(it =

0; it < ln && n[it]

=='0'

;++it)

; ltn = ln - it;

for(

; it < ln;

++it) tn[ln - it -1]

= n[it]

; tn[ltn]

= tn[ltn +1]

= tn[ltn +2]

='0'

; tn[ltn +3]

='\0'

;for

(it =

0; it < lm && m[it]

=='0'

;++it)

; ltm = lm - it;

for(

; it < lm;

++it) tm[lm - it -1]

= m[it]

; tm[ltm]

= tm[ltm +1]

= tm[ltm +2]

='0'

; tm[ltm +3]

='\0'

; stot =

qpow

(next1, ltm, tm)

; tot = next2 * stot;

tot = stot *

qpow

(tot, ltn, tn)

;printf

("%lld\n"

,mod

(tot.mat[0]

[0]+ tot.mat[0]

[1])

);return0;

}

NOI2013 矩陣遊戲

據學長的話來說 這是當年noi最簡單的一道題 於是抱著試一試的心態做了一做 蒟蒻qaq 由於矩陣乘法不會,只能數學必修的種數列知識推公式 先橫向推 f x k a f x 1 k 展開就可以得到乙個等比數列 然後根據等比數列的性質可得 fx ax 1 f1 b ax 1 1 a 1 至此我們完成了將...

NOI2013矩陣遊戲

題目鏈結luogu1397矩陣遊戲 題目大意 已知 f1 1 1 fi,j a f i,j 1 bf i,1 c fi 1,m d j 1 i 1 求f n,m 我們可以構造矩陣 1 fn,1 1 0ba m 1 1fn m 1 c fn 1,m d 10b a m 1 1 fn,m 令t 10ba...

矩陣乘法 NOI2013 向量內積

兩個 d 維向量 a a1,a2,ad 與 b b1,b 2,bd 的內積為其相對應維度的權值的乘積和,即 a b i 1 daib i a1 b1 a 2b2 ad bd現在有 n 個 d維向量 x1 x2,xn 小喵喵想知道是否存在兩個向量的內積為 k 的倍數。請幫助她解決這個問題。第一行包含 ...