數學 快速冪與矩陣快速冪

2022-01-10 04:14:07 字數 2658 閱讀 3669

1.a sequence of numbers

題目:題解:這是一道隱藏的快速冪的模板題,從資料我們就可以知道。對該題進行分析,如何判別是等差or等比,通過比較a[2]-a[1]==a[3]-a[2]如果相等,則為等差

否則a[2]/a[1]==a[3]/a[2],就為等比,然後利用快速冪來解決等比。

**:

#includeusing

namespace

std;

typedef

long

long

ll;const

int mod=200907

;ll n,k;

ll a[

10];

ll fastpow(ll a,ll n)

return

res;

}int

main()

else

if(a[2]/a[1]==a[3]/a[2

])

}return0;

}

2.rightmost digit

題目:題解:這是一道典型的快速冪,只不過有一點需要注意,不要再完成運算後再取模,應該邊運算邊取模,否則會tle

**:

#includeusing

namespace

std;

typedef

long

long

ll;ll t;

ll fastpow(ll a,ll n)

res=res%10

;

return

res;

}int

main()

return0;

}

3.矩陣快速冪

題目:題解:一道入門級矩陣快速冪的運算

**:

#include#include

using

namespace

std;

const

int maxn=110

;const

int mod=1e9+7

;typedef

long

long

ll;struct

matrix

};matrix multi(matrix a,matrix b)

}return

res;

}matrix fastm(matrix a,ll n)

return

res;

}int

main()

s=fastm(s,k);

for(i=0;i)

return0;

}

4.矩陣加速

題目:題解:一道需要求出對應矩陣的矩陣快速冪的運算。

分析一下:

a[n]=1*a[n-1]+0*a[n-2]+1*a[n-3]

a[n-1]=1*a[n-1]+0*a[n-2]+0*a[n-3]

a[n-2]=0*a[n-1]+1*a[n-2]+0*a[n-3]

因此,我們可以總結出:

進而,對其進行推到,因為我們已知a1=a2=a3=1,所以盡可能使右邊的行列式替換成已知數,因此,最終的公式為:

這樣我們最終要求的就是an在陣列中的位置為res.m[0][0],然後我們利用矩陣快速冪來求解行列式的n-3次方的值乘以行列式即可

其中,需要注意的是maxn=3還有對於小於等於3的進行特判,否則會tle的

**:

#include#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=3

;const

long

long mod=1e9+7

;struct

matrix

};matrix multi(matrix a,matrix b)

}return

res;

}matrix fastm(matrix a,ll n)

return

res;

}int

main()

matrix k,s,res;

k.m[

0][0]=1

; k.m[

1][0]=1

; k.m[

2][0]=1

; s.m[

0][0]=1;s.m[0][1]=0;s.m[0][2]=1

; s.m[

1][0]=1;s.m[1][1]=0;s.m[1][2]=0

; s.m[

2][0]=0;s.m[2][1]=1;s.m[2][2]=0

; s=fastm(s,n-3

); res=multi(s,k);

cout

<0][0]<

}return0;

}

數學 快速冪與矩陣快速冪

二進位製取冪的想法是,我們將取冪的任務按照指數的 二進位制表示 來分割成更小的任務 快速冪的遞迴版本 long long fastpower long long a,long long b while迴圈版本 相對於原來的遞迴版本更快 解決你的tle long long fastpower long...

快速冪與矩陣快速冪

1 結論 a b mod c a mod c b mod c mod c a b c a c b c 2 先這樣理解一下 int ans 1 a a c if b 2 1 ans ans a c k a a c for i 0 i return ans c 我們把式子轉化成k b 2 modc 所以...

快速冪與矩陣快速冪

快速冪,顧名思義要快速解決數冪問題 樸素演算法中時間複雜度為o n 在處理大數冪時顯然會爆,這時要使用到快速冪的思想。對於乙個數的6方a 6們通常使用a a a a a a,此時計算機進行5乘法運算,但我們可以將其拆分為 a a a a a a 這樣做的優點在於當我們進行一次a a運算後,只需將其乘...