BZOJ 3231 Sdoi2008 遞迴數列

2022-04-29 23:48:09 字數 1040 閱讀 8809

bzoj_3231_[sdoi2008]遞迴數列_矩陣乘法

乙個由自然數組成的數列按下式定義:

對於i <= k

:ai = bi

對於i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k

其中bj

和cj (1<=j<=k

)是給定的自然數。寫乙個程式,給定自然數m

<= n, 計算am

+ am+1

+ am+2

+ ... + an

, 並輸出它除以給定自然數p的餘數的值。

由四行組成。

第一行是乙個自然數k

。第二行包含k

個自然數b1, b2,...,bk

。第三行包含k

個自然數c1, c2,...,ck

。第四行包含三個自然數m

, n, p

。僅包含一行:乙個正整數,表示(am

+ am+1

+ am+2

+ ... + an

) mod p

的值。2

1 11 1

2 10 1000003

142對於100%的測試資料:

1<= k<=15

1 <= m <= n <= 1018

用c矩陣做矩陣乘法。

由於需要求和我們在矩陣中加一項表示sn。

然後直接上矩陣快速冪。

**:

#include #include #include using namespace std;

typedef long long ll;

#define n 20

ll p,c[n],a[n],b[n],s[n];

int n,m;

struct mat

mat operator * (const mat &x) const

}} return re;

}}x;

mat qp(mat x,ll y)

ll gets(ll y)

int main()

bzoj 3231 SDOI2008 遞迴數列

乙個由自然數組成的數列按下式定義 對於i k a i b i 對於i k a i c 1 a i 1 c 2 a i 2 c k a i k 其中b j 和 c j 1 j k 是給定的自然數。寫乙個程式,給定自然數m n,計算a m a m 1 a m 2 a n 並輸出它除以給定自然數p的餘數的...

BZOJ3231 Sdoi2008 遞迴數列

bzoj3231 sdoi2008 遞迴數列 乙個由自然數組成的數列按下式定義 對於i k ai bi 對於i k ai c1ai 1 c2ai 2 ckai k 其中bj 和 cj 1 j k 是給定的自然數。寫乙個程式,給定自然數m n,計算am am 1 am 2 an 並輸出它除以給定自然數...

BZOJ3231 矩陣連乘,稍有點複雜

題目 3231 sdoi2008 遞迴數列 題意 乙個由自然數組成的數列按下式定義 對於 i k ai bi 對於 i k ai c1ai 1 c2ai 2 ckai k 其中bj和 cj 1 j k 是給定的自然數。寫乙個程式,給定自然數 m n,計算am am 1 am 2 an 並輸出它除以給...