矩陣運算(加,減,乘,除,快速冪)

2021-07-04 06:30:46 字數 1701 閱讀 7817

矩陣運算

矩陣運算:

/******************************************=

矩陣運算

複雜度:o(n^3)

****************************************=*/

const int maxn = 105;

const int maxm = 105;

struct matrix

matrix operator + (const matrix &b) const

matrix operator - (const matrix &b) const

matrix operator * (const matrix &b) const

};

矩陣加法

對應位置相加。(等行等列)

**如下:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define debug "output for debug\n"

#define pi (acos(-1.0))

#define eps (1e-6)

#define inf (1<<28)

#define sqr(x) (x) * (x)

#define mod 1000000007

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int max=105;

struct matrix

};matrix operator +(matrix a,matrix b)

};matrix operator -(matrix a,matrix b)

};matrix operator *(matrix a,matrix b)

};matrix operator *(matrix a,matrix b)

return c;

}int main()

{ int i,j,k;

matrix a,b,c;

//printf("輸入矩陣的行列(n)和冪值(k):\n");

scanf("%d%d",&n,&k);

//printf("輸入n*n的矩陣a:\n");

for(i=0;i

2、給定矩陣a,請快速計算出a^n(n個a相乘)的結果,輸出的每個數都mod p。

由於矩陣乘法具有結合律,因此a^4 = a * a * a * a = (a*a) * (a*a) = a^2 * a^2。我們可以得到這樣的結論:當n為偶數時,a^n = a^(n/2) * a^(n/2);當n為奇數時,a^n = a^(n/2) * a^(n/2) * a (其中n/2取整)。這就告訴我們,計算a^n也可以使用二分快速求冪的方法。例如,為了算出a^25的值,我們只需要遞迴地計算出a^12、a^6、a^3的值即可。根據

這裡的一些結果,我們可以在計算過程中不斷取模,避免高精度運算。

大數運算(加減乘除)

加法 void add char a,char b,char d for i len i 1 i if c i 48 len else break for i 0 i len i d i c len i view code 減法1 d2 d1,如果需要比較大小自己加乙個不麻煩。void dec ch...

位運算加減乘除

按位異或 按位與 按位或 計算機系統中,數值一律用補碼來表示 因為補碼可以使符號位和數值位統一處理,同時可以使減法按照加法來處理。對補碼做簡單介紹 數值編碼分為原碼,反碼,補碼,符號位均為0正1負。原碼 補碼 數值位取反加1 補碼 原碼 對該補碼的數值位繼續 取反加1 補碼 的絕對值 稱為真值 正數...

大數運算 加減乘除

大數運算產生的原因就是因為int,double型別表示範圍都有限,無法表示過長的數字比如 2345468454567865415467864453437。因此也就無法進行四則運算,為了實現這種運算,大數運算產生了。其實也很簡單,既然基本資料型別放不下這些資料,那就用陣列存放唄。定義char c 10...