題意:給出乙個矩陣,第一行從左到右分別是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.解題思路 先要依據矩陣元素的特徵...