tr a
time limit:1000ms
memory limit:32768kb
64bit io format:%i64d & %i64u
submitstatus
description
a為乙個方陣,則tr a表示a的跡(就是主對角線上各項的和),現要求tr(a^k)%9973。
input
資料的第一行是乙個t,表示有t組資料。
每組資料的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是[0,9],表示方陣a的內容。
output
對應每組資料,輸出tr(a^k)%9973。
sample input
22 21 0
0 13 99999999
1 2 3
4 5 6
7 8 9sample output
22686題意:a為乙個方陣,則tr a表示a的跡(就是主對角線上各項的和),現要求tr(a^k)%9973。
思路:先求矩陣的 k 次冪,再把對角線元素相加模 m。用快速冪,並且中間就模m,以免溢位。
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const double pi = acos(-1.0);
const double e = 2.718281828459;
const double eps = 1e-8;
int n, k;
int m =9973;
struct matrix
};matrix multi(matrix a, matrix b)
t.m[i][j] %= m;}}
return t;
}matrix pow_mod(matrix a, matrix b)
return b;
}int main()
}//b為單元矩陣,相當於整數的1
for(int i = 0; i < n; i++)
b = pow_mod(a, b);
int ans = 0;
for(int i = 0; i < n; i++)
cout<
hdu1575 Tr A(矩陣快速冪)
今天做的第二道矩陣快速冪題,因為是初次接觸,各種奇葩錯誤整整除錯了一下午。廢話不說,入正題。該題應該屬於矩陣快速冪的裸題了吧,知道快速冪原理 二進位制迭代法,非遞迴版 後,剩下的只是處理矩陣乘法的功夫了,我直接用個結構體來表示矩陣,確實能省去不少功夫 這裡一定要注意用單位矩陣 來初次相乘,但不要把它...
HDU 1575 Tr A 矩陣快速冪
a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方陣a的內容。對應每組資料,輸出tr a ...
HDU 1575 Tr A(矩陣快速冪)
思路 簡單的矩陣快速冪 include include includeusing namespace std int n,mod struct mat mat mul mat a,mat b return t mat expo mat p,int k return e int add mat a i...