nyist 301 遞推求值

2022-08-09 00:30:22 字數 1510 閱讀 5252

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:4

描述給你乙個遞推公式:

f(x)=a*f(x-2)+b*f(x-1)+c

並給你f(1),f(2)的值,請求出f(n)的值,由於f(n)的值可能過大,求出f(n)對1000007取模後的值。

注意:-1對3取模後等於2

輸入第一行是乙個整數t,表示測試資料的組數(t<=10000)

隨後每行有六個整數,分別表示f(1),f(2),a,b,c,n的值。

其中0<=f(1),f(2)<100,-100<=a,b,c<=100,1<=n<=100000000 (10^9)

輸出輸出f(n)對1000007取模後的值

樣例輸入

2

1 1 1 1 0 5

1 1 -1 -10 -100 3

樣例輸出

5

999896

該題就是求乙個矩陣a的n-2次冪

由f(x-1) f(x-1) c f(x-1) f(x) c

0 0 0 *a = 0 0 0

0 0 0 0 0 0

退出我矩陣a == 0 a 0

1 b 0

0 1 1

然後乘上我們的b f1 f2 c

0 0 0

0 0 0

的最後矩陣我們的答案就是矩陣的第二個數

如果該數小於0 那麼+我們的求餘數

1 #include 2 #include 3 #include 4

5using

namespace

std;67

#define len 1000007

89 typedef struct

numb

1016

}numb;

1718 numb tem;//

中間矩陣

19 numb x;//

20numb y;

2122

void set_x(numb &z,int a,int

b)23

30void set_y(numb &z,int f1,int f2,int

c)31

3637

void chenfa(numb &z,numb x,numb y)//

a*b38

4546

void judge(numb &tmp,numb z,int n)//

a的次方

4754 n /= 2;55

chenfa(z,z,z);56}

57}5859

intmain()

6074

else92}

93return0;

94 }

nyist 301 遞推求值(矩陣快速冪)

思路 注意矩陣乘法不滿足交換律,所以要注意初始矩陣在右邊,要進行快速冪的矩陣在左邊 左邊的矩陣為 右邊的矩陣為 b a cf2 0 0 1 0 0f1 0 0 0 0 1 1 0 0 ac include include include include include include include...

NYOJ301 遞推求值

遞推求值 nyoj上矩陣專題裡的10道題水了ac率最高的5道,慚愧,還不是完全自己寫的,用了幾乎兩周的時間。模板題我是有自信寫出來的,但對於高階一點的矩陣構造,我還是菜的摳腳。這題感謝mql大哥和她女票指點,自己想了一天不會構造矩陣,然後兩位巨巨一起討論了一下,瞬間明白了。此題關鍵就是在於這個矩陣構...

NYOJ 301遞推求值

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給你乙個遞推公式 f x a f x 2 b f x 1 c 並給你f 1 f 2 的值,請求出f n 的值,由於f n 的值可能過大,求出f n 對1000007取模後的值。注意 1對3取模後等於2 輸入第一行是乙個整數t,表示...