模板--快速幂及矩阵快速幂
2017-10-03 11:40
316 查看
快速幂
typedef long long ll; ll fun(ll x,ll n) { ll res=1; while(n>0) { if(n&1) res=(res*x)%Max; x=(x*x)%Max; n>>=1; } return res; }
矩阵快速幂
#include<cstdio> #include<iostream> #include<vector> using namespace std; typedef long long ll; typedef vector<long long>vec; typedef vector<vec>mat; const ll N=1000000009; mat mul(mat a,mat b) //矩阵乘法 { mat c(a.size(),vec(b[0].size())); for(ll i=0;i<a.size();i++) { for(ll k=0;k<b.size();k++) { for(ll j=0;j<b[0].size();j++) { c[i][j]=(c[i][j]+a[i][k]*b[k][j])%N; } } } return c; } mat solve_pow(mat a,ll n) //快速幂 { mat b(a.size(),vec(a.size())); for(ll i=0;i<a.size();i++) { b[i][i]=1; } while(n>0) { if(n&1) b=mul(b,a); a=mul(a,a); n>>=1; } return b; } ll n; void solve() { mat a(2,vec(2)); while(~scanf("%lld",&n)&&n!=-1) { a[0][0]=1,a[0][1]=1; a[1][0]=1,a[1][1]=0; a=solve_pow(a,n); printf("%lld\n",a[1][0]); } } int main() { solve(); return 0; }
相关文章推荐
- 洛谷 P3390 【模板】矩阵快速幂
- 模板——矩阵快速幂
- Additions HNUST 1713(矩阵快速幂模板 )
- 模板【洛谷P3390】 【模板】矩阵快速幂
- 矩阵快速幂模板HDU——1575
- 矩阵快速幂模板
- 矩阵快速幂模板(1575)
- 矩阵快速幂 模板
- hdu1575 Tr A(矩阵快速幂模板题)
- hrbust 2190 矩阵快速幂模板
- poj 3070 <矩阵快速幂【模板】求Fibonacci数列>
- POJ 3070 Fibonacci(矩阵快速幂模板)
- Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)
- 模板:(数学:矩阵快速幂)
- 【模板】矩阵快速幂
- 矩阵快速幂模板
- 矩阵快速幂模板
- HDU 1757 A Simple Math Problem(矩阵快速幂模板)
- [模板] - 矩阵快速幂
- 【洛谷P3390】 矩阵快速幂(模板)