行列高速電力-QuickPow

マトリックスパワーの迅速な導入


 

  1.高速の整数パワー:

  迅速なパワーマトリックス、および高速電力アルゴリズムの利点の説明を惹起するために、我々は最初の整数を累乗することができます。
あなたは今、X ^ 8を計算したい場合は:それはX-あるX- X- X- X- X- X-は珍しいアイデアをX-従って、上記の1、乗算七回ずつ取ります。
(X-
X-)(X- X-)(X- X-)(X- X-)

ように計算する、次の3回の乗算を実行し、次にX ^ 2、第X ^ 2を乗じた、見つけるためのこの方法は、乗算を4回行われます。私たちは、以下の7倍を持っています。だから、すぐに整数の電力をカウントするために、我々はアイデアの組み合わせを検討します。
今ポイントが速く計算するべきかを検討します。次に、高速の整数乗を計算します。例:X ^ 19番目。
10011:バイナリは19です。
(^ X-M)(N-X- ^)= X- ^(N-M +)を
19 = X ^である- (^ X-16)
(X- ^ 2)*(X- ^ 1)

それを解決するためにどのようにして高速電力。次のコードを考えてみましょう:
X ^ Nの解決値を
X ^ Nを算出///高速整数累乗、

1  INT QuickPow(int型のx、int型のN)//着信指標と塩基X N
 2  {
 3      int型のRES =のX;
 4      INT ANS = 1。;
 。5      ながら(N)
 6      {
 7          IF(N&。1 )である// N奇数
 。8          {
 9              ANS = ANS * RES;
 10          }
 11          RESの=のRES * RES。
 12で          N = N >> 1。; N //右シフト
 13である     }
 14      リターン ANS。
    }

 それでは、右端に次のコードを見てみましょう:
X ^ 19の用語について:
バイナリ19は次のとおりです。10011
初期値:

それでは、右端に次のコードを見てみましょう:
X ^ 19の用語について:
バイナリ19は次のとおりです。10011
初期値:

年= 1 ; RES = xで。

 

10011 1それは奇妙で、最後のものです。

ANS = ANS何も* = X; 
何も =何も何もありません* = X ^ 2

 

次に、右側の1、1001年
最後のビットが1である澤1001は、それが奇数であります

 
ANS = ANS = X *何も*(X ^ 2)= X ^ 3 
  =何も何も* = X ^ 2 * X ^ 2 = X ^ 4

 

次に、右側の1、100

最後の一つは、現在の数が偶数である、0です。

RESの=のRES * RES = X ^ 4 * X ^ 4 = X ^ 8

 

次に右のいずれか、10
最後のビットが0であるが、現在の数が偶数です。

RESの=のRES * RES = X ^ 8 * X ^ 8 = X ^ 16

 

1つの右一つは、
最後のビットが1である、現在の数が奇数であります

ANS = ANS何* =(x ^ 3)*(X ^ 16)= X ^ 19 
  =何=何も* X ^ 32

 

2.マトリックスクイックパワーアルゴリズム記事

迅速な思考と整数演算アルゴリズムと同様の権限:

1枚の 構造体マット
 2  {
 3。      LLのM [ 101 ] [ 101 ]、
 4 }; // メモリ構造
5。マットA、E; // Aは、eは、出力行列であり、行列の入力である
6。 マット加算ムル(Xマット、マットY)
 7。 {
 8。     マットC;
 9      ためのint型私は= 1 ; I <= N; ++ I)は{
 10          のためにINT J = 1 ; J <= N-; ++ J){
 11。              CM&LT [I] [ J] = 0 ;
 12である         }
 13です     }
14      のためにint型 i = 1 ; iが<= N; ++ I){
 15          のためにINT J = 1 ; J <= N; ++ j)は{
 16              のためのint型のk = 1、N = <K + + K){
 17                  センチ[I] [J] =センチ[I] [J]%のMOD + XM [I] [K] * YM [K] [J]%MOD。
18              }
 19          }
 20      }
 21      リターンC。
22  }
 23マットPOW(マットX、LLのY)// 矩阵快速幂
24  {
 25      マットANS =E;
26      一方、(Y){
 27          であれば(Y&1)ANS = ムル(ANS、X)。
28          X = ムル(X、X)。
29          Y >> = 1 30      }
 31の     リターン ANS。
コードの表示

 

おすすめ

転載: www.cnblogs.com/swijtu-lawrenceD-1425123490/p/Algorithm-01-MatrixQuickPow.html