題意:
an=σ1<=i<=kan-ibi mod 10 000 for n >= k,題意看了好久才懂,有點蛋疼啊,
這個題目要是能看懂題意就簡單了,先給你k,然後給你a0 a1 a2 a3 ..ak-1.
然後給你b1 b2 b3 b4 ..bk,然後給你乙個i,讓你輸出ai的值,如果i < k直接輸出輸入時的ai就行,否則就按照他給的那個公式
an=σ1<=i<=kan-ibi mod 10 000 for n >= k
比如k=3
那麼 a3 = a2*b1 + a1*b2 + a0*b3
a4 = a3*b1 + a2*b2 + a1*b3
a5 = a4*b1 + a3*b2 + a2*b3
a6 = a5*b1 + a4*b2 + a3*b3
......
下面構造矩陣 ,這個矩陣是k*k的,也就是每次都是變的,但是有規律,最大是100*100
,拿k=3舉例子
a3 a2 a1 0 0 b1 a2 a3 a4
1 0 b2
0 1 b3
這樣就輕鬆構造這個矩陣了吧,要是k=4也一樣
0 0 0 b1
1 0 0 b2
0 1 0 b3
0 0 1 b4
....
好啦就說這麼多,最近在忙活寫伺服器玩,去寫自己的伺服器嘍......
#include#include#define mod 10000
typedef struct
m;m matm(m a ,m b ,int n)
m qpowmat(m a ,int b ,int n)
return c;
}int main ()
memset(star.mat ,0 ,sizeof(star.mat));
for(i = 1 ;i < k ;i ++)
star.mat[i+1][i] = 1;
for(i = 1 ;i <= k ;i ++)
star.mat[i][k] = b[i];
ans = qpowmat(star ,n - k + 1 ,k);
int sum = 0;
for(i = 1 ;i <= k ;i ++)
sum = (sum + a[i-1] * ans.mat[i][k]) % mod;
printf("%d\n" ,sum);
}return 0;
}
POJ 2118 矩陣乘法來解線性遞推
看了matrix67關於fibonacci那段的講解.就和狐狸大牛一起去poj做了這道.我了個去我了個擦.600多個人做200多個過真的大丈夫?第一次做這種這麼少人做的題很是緊張.囧.其實理解了用矩陣來解線性遞推的方法.這題.模板題.記住幾個關鍵.用矩陣乘法來解線性遞推,首先當然是構造矩陣a.這個矩...
POJ 2118 矩陣乘法來解線性遞推
看了matrix67關於fibonacci那段的講解.就和狐狸大牛一起去poj做了這道.我了個去我了個擦.600多個人做200多個過真的大丈夫?第一次做這種這麼少人做的題很是緊張.囧.其實理解了用矩陣來解線性遞推的方法.這題.模板題.記住幾個關鍵.用矩陣乘法來解線性遞推,首先當然是構造矩陣a.這個矩...
矩陣快速冪 快速冪模板poj3070
poj3070 題意就是通過,矩陣求斐波那契數列數列 如果不知道遞推怎麼來的,或者不知道矩陣快速冪的,可去 看不懂打我 其實矩陣快速冪和快速冪乙個思想來的,都差不多,矩陣快速冪就是把快速冪的乘法運算換成矩陣乘法,再加上一點矩陣知識。快速冪模板 define ll long long int ll q...