矩陣快速冪計算hdu1575

2022-05-12 22:37:54 字數 869 閱讀 4698

矩陣快速冪計算和整數快速冪計算相同。在計算a^7時,7的二進位制為111,從而a^7=a^(1+2+4)=a*a^2*a^4.而a^2可以由a*a得到,a^4可以由a^2*a^2得到。計算兩個n階方陣的乘積複雜度為o(n^3)。k的二進位制大約有logk位,總的複雜度為o(n^3*logk).

#define _crt_secure_no_deprecate#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int mod = 9973

;class

matrix

matrix(

int n); //

初始化int trsum(); //

計算矩陣跡

matrix quickpower(int k);//

矩陣快速冪

};matrix::matrix(

intn)

matrix matrix::

operator*(matrix&x)

res.n =n;

return

res;

}int

matrix::trsum()

matrix matrix::quickpower(

intk)

returny;}

intmain()

x =x.quickpower(k);

printf(

"%ld\n

",x.trsum());

}return0;

}

矩陣快速冪hdu 1575

矩陣快速冪就是求方陣a的n次方,一定得是方陣.複雜度為logn,對角線相加就是矩陣的值 主要是套模板,下面給出我收藏的模板 struct matunit 矩陣乘法 mat operator mat a,mat b return ret void init unit mat pow mat mat a...

hdu1575 矩陣乘法

要求矩陣的冪,可以將指數變為二進位制的方法,如 r 17 r 16 r 1 即17的二進位制10001,也在用遞迴的方法。下面是用二進位制的方法,如下 include include include define maxn 100 define mod 9973 using namespace st...

hdu1575 Tr A(矩陣快速冪)

今天做的第二道矩陣快速冪題,因為是初次接觸,各種奇葩錯誤整整除錯了一下午。廢話不說,入正題。該題應該屬於矩陣快速冪的裸題了吧,知道快速冪原理 二進位制迭代法,非遞迴版 後,剩下的只是處理矩陣乘法的功夫了,我直接用個結構體來表示矩陣,確實能省去不少功夫 這裡一定要注意用單位矩陣 來初次相乘,但不要把它...