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(x-3) + …… + a9 * f(x-10),ai 只能為 0 或 1。
q老師 將給定 a0~a9,以及兩個正整數 k m,詢問 f(k) % m 的數值大小。
聰明的你能通過 q老師 的考驗嗎?
輸出檔案包含多組測試用例,每組測試用例格式如下:
第一行給定兩個正整數 k m。(k < 2e9, m < 1e5)
第二行給定十個整數,分別表示 a0~a9。
對於每一組測試用例輸出一行,表示 f(k) % m 的數值大小。
通過矩陣乘法的定義可以構造出以上轉移矩陣。然後套用矩陣快速冪的板子(乘法後要對m取餘)就可以計算出中間的n-9次矩陣,最後答案就是f(k)。
一道矩陣快速冪來求解線性遞推的題目,構造轉移矩陣是關鍵。同時也要理解矩陣快速冪的思想。
#include
#include
using
namespace std;
int a[10]
,k,m;
const
int n=10;
const
int f[10]
=;struct matrix}}
return ret;
} matrix (
) matrix (
const matrix &t)};
matrix quick_pow
(matrix a,
int x)
return ret;
}int
main()
}}
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老師的考驗(必做)
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,以及兩個正整數 ...
week14作業E Q老師度假
忙碌了乙個學期的 q老師 決定獎勵自己 n 天假期。假期中不同的穿衣方式會有不同的快樂值。已知 q老師 一共有 m 件襯衫,且如果昨天穿的是襯衫 a,今天穿的是襯衫 b,則 q老師 今天可以獲得 f a b 快樂值。在 n 天假期結束後,q老師 最多可以獲得多少快樂值?輸入 輸入檔案包含多組測試樣例...