【Java學習】漢諾塔
阿新 • • 發佈:2020-11-01
1.矩陣乘法
矩陣乘法(就是線性代數裡學過那個)是對矩陣的一種基本運算,僅當矩陣A列數與矩陣B行數相等時AB才有意義。由A(m,n)B(n,p)可得到C(m,p);矩陣乘法滿足結合律與分配律,但不滿足交換律,因為比較簡單所以這裡就不詳細講了。
例題:
/* 假設 A 是 m*p 的矩陣 , B 是 p*n 的矩陣 記 C = AB (C 是 矩陣 A與B的乘積) 那麼 C 是 m*n 的矩陣 */ for (int i = 1;i <= m;++i)//A的行 { for (int j = 1;j <= n;++j)//B的列 { for (int k = 1;k <= p;++k)//通過公式求C { C[i][j] += A[i][k]*B[k][j]; } } }
注意:方陣也不滿足交換律
2.快速冪
比較簡單,話不多說直接上程式碼
int Pow(int a,int b){
int ans = 1;
int base = a;
while(b){
if(b & 1) ans *= base;
base *= base;
b >>= 1;
}
return ans;
}
需要取模:
#define mod 1000000007 int pow_mod(int a,int b){ int ans = 1; int base = a%mod; while(b){ if(b & 1) ans = (ans*base)%mod; base = (base*base)%mod; b >>= 1; } return ans; }