HDU 5015 233 Matrix 矩陣遞推

2021-06-25 16:25:05 字數 642 閱讀 9711

題意:給出乙個矩陣,第一行從左到右分別是233,2333,23333,2333333。。。,給出第一列的元素。其他的元素是它上面和左面的元素的和。求右下角元素的值。

思路:在比賽的時候,總是想從右下角的元素遞推回去,找到公式,直接計算。發現沒法高效的求和。

這道題正確的解法是利用矩陣從第二列開始遞推,每次得到下一列每個元素的值,最終的得到右下角的元素的值。

這樣,我們需要構造出乙個矩陣表示和題目中給出的和的關係。同時還要遞推233.

**如下:

#include #include #include #include using namespace std;

typedef long long ll;

typedef vectorvec;

typedef vectormat;

const ll mod = 1e7+7;

mat mul(mat & a, mat &b)

mat pow(mat a, ll n)

return b;

}int n,m;

ll a[100005];

int main(void)

{ while(scanf("%d %d", &n,&m) != eof){

for(int i=0; i

HDU5015 233 Matrix 矩陣快速冪

題目鏈結 題意 給定乙個矩陣的第0列的第1到n個數,第一行第1個數開始每個數分別為233,2333.求第n行的第m個數。思路 將第一行的數全部右移一位,用前一列遞推出下一列,構造矩陣,類似如下 1 0 0 0 0 0 0 1 10 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 ...

hdu5015 233 Matrix(矩陣快速冪)

解題思路 根據題目我們發現n的值最大只有10,而m的值最大為10 9,因此可以考慮使用矩陣冪運算,以列為單位 我們根據推理可以發現由前一列乘以某個矩陣之後可以得到後一列,矩陣如下 10 0 0 0 0 1 10 1 0 0 0 1 10 1 1 0 0 1 10 1 1 1 1 1 0 0 0 0 ...

HDU5015 233 Matrix 矩陣高速冪

hdu5015 233 matrix 矩陣高速冪 題目鏈結 題目大意 給出n m矩陣,給出第一行a01,a02,a03 a0m 各自是233,2333,23333.再給定第一列a10,a10,a10,a10,an0.矩陣中的每乙個元素等於左邊的加上上面的,求出anm.解題思路 先要依據矩陣元素的特徵...