week14 c - q老師的考驗(必做)
q老師 對數列有一種非同一般的熱愛,尤其是優美的斐波那契數列。
當 x < 10 時,f(x) = x;
當 x ≥ 10 時,f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10),ai 只能為 0 或 1。
q老師 將給定 a0~a9,以及兩個正整數 k m,詢問 f(k) % m 的數值大小。
聰明的你能通過 q老師 的考驗嗎?
input
輸出檔案包含多組測試用例,每組測試用例格式如下:
第一行給定兩個正整數 k m。(k < 2e9, m < 1e5)
第二行給定十個整數,分別表示 a0~a9。
output
對於每一組測試用例輸出一行,表示 f(k) % m 的數值大小。
sample input
10
999911
1111
1111
2050010
1010
1010
sample output
45
104
解題思路
用到了剛學的矩陣快速冪
先構造矩陣資料結構
再依公式計算
code
#include
#include
#include
#include
using
namespace std;
int a[10]
;int ans;
struct mxmx(
int*a)
for(
int i =
1; i <10;
++i)}}
mx operator*(
const mx& m)}}
return nm;
} mx operator%(
int d)
}return
*this;}
};mx qp
(mx m,
int x,
int mod)
}while
(x)return nm;
}int
main()
mx mm
(a);
/*for(int i=0;i<10;i++)
cout<}
week14 作業C Q老師的考驗
q老師 對數列有一種非同一般的熱愛,尤其是優美的斐波那契數列。當 x 10 時,f x x 當 x 10 時,f x a0 f x 1 a1 f x 2 a2 f x 3 a9 f x 10 ai 只能為 0 或 1。q老師 將給定 a0 a9,以及兩個正整數 k m,詢問 f k m 的數值大小。...
Week14作業 C Q老師的考驗 矩陣快速冪
q老師 對數列有一種非同一般的熱愛,尤其是優美的斐波那契數列。這一天,q老師 為了增強大家對於斐波那契數列的理解,決定在斐波那契的基礎上建立乙個新的數列 f x 來考一考大家。數列 f x 定義如下 當 x 10 時,f x x 當 x 10 時,f x a0 f x 1 a1 f x 2 a2 f...
C Q老師的考驗
q老師 對數列有一種非同一般的熱愛,尤其是優美的斐波那契數列。當 x 10 時,f x x 當 x 10 時,f x a0 f x 1 a1 f x 2 a2 f x 3 a9 f x 10 ai 只能為 0 或 1。q老師 將給定 a0 a9,以及兩個正整數 k m,詢問 f k m 的數值大小。...