C Q老師的考驗

2021-10-06 21:14:45 字數 1368 閱讀 4960

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 9999

1 1 1 1 1 1 1 1 1 1

20 500

1 0 1 0 1 0 1 0 1 0

sample output

45

104

本題核心演算法為,快速計算矩陣快速冪。

首先,根據題意,

f(x)=

matrix multiply

(matrix& mat);}

;matrix matrix::

multiply

(matrix& mat)}}

return tmp;

} matrix my_pow

(matrix mm,

int x)

while

(x!=0)

//如果剩下的次數為1,只需要再乘一次

mm=mm.

multiply

(mm)

;

x>>=1;

//每次乘法都是1次方相乘、2次方相乘、3次方相乘,所以每次計算之後要除2

}return tt;

}int

main()

if(k<10)

t=my_pow

(t,k-9)

;//t變為最後的結果矩陣

ans=0;

for(

int i=

0;i<

10;i++

)printf

("%d\n"

,ans);}

return0;

}

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作業 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...