時間限制: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
5999896
該題就是求乙個矩陣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 45using
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,表示...