P1939 模板 矩陣加速(數列)

2022-06-18 02:12:13 字數 697 閱讀 7812

已知乙個數列 aa,它滿足:

a_x= \begin 1 & x \in\\\ a_+a_ & x \geq 4 \endax​=x≥4​

求 aa 數列的第 nn 項對 10^9+7109+7 取餘的值。

第一行乙個整數 tt,表示詢問個數。

以下 tt 行,每行乙個正整數 nn。

每行輸出乙個非負整數表示答案。

#includeusing

namespace

std;

const

int maxn=1010

;typedef

long

long

ll;const

int mod=1e9+7

;int

t,n;

struct

matrix ans,

base

;void

init ()

matrix mul (matrix a,matrix b)

return

wjm;

}void qpow (int

p) }

intmain ()

init();

qpow(n);

printf(

"%lld\n

",ans.m[2][1

]); }

}

P1939 模板 矩陣加速(數列)

題目描述 a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。輸入輸出樣例 輸入 1 複製36 810輸出 1...

P1939 模板 矩陣加速(數列)

a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。輸入樣例 1 368 10輸出樣例 1 4919 對於30...

P1939 矩陣加速(數列)

這個題若不看題目和範圍,我首先想到用遞推,不過 n 2 10 9,若用遞推,一定會超時。要用矩陣加速的話首先要找到乙個矩陣 不唯一 用來相乘 a1,a2,a3 是乙個1 3的矩陣,我想把它轉化為 a2,a3,a4 也是乙個1 3的矩陣,所以要找的矩陣肯定是3 3的 可以假設這個3 3的矩陣為 所以 ...