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 並輸出它除以給...