zoukankan      html  css  js  c++  java
  • 快速幂&矩阵快速幂

     快速幂模板

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 
     5 int main()
     6 {
     7     ll a, b, c; cin >> a >> b >> c;
     8     ll aa = a, bb = b;
     9     ll ans = 1;
    10     while (b >= 1)
    11     {
    12         if (b & 1)
    13             ans = ans * a % c;
    14         a = a * a % c;
    15         b >>= 1;
    16     }
    17     printf("%lld^%lld mod %lld=%lld
    ", aa, bb, c, ans % c);//注意:当b等于0的时候,结果为1,要单独对c取模,因为c可能为1.
    18 }

    矩阵快速幂模板

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const long long maxn = 110;
     5 long long mod = 1e9 + 7;
     6 struct matrix
     7 {
     8     long long v[maxn][maxn];
     9     long long n;
    10 };
    11 matrix mul(matrix a, matrix b)
    12 {
    13     matrix res;
    14     res.n = a.n;
    15     memset(res.v, 0, sizeof(res.v));
    16     for (long long i = 1; i <= res.n; i++)
    17         for (long long j = 1; j <= res.n; j++)
    18             for (long long k = 1; k <= res.n; k++)
    19                 res.v[i][j] += a.v[i][k] * b.v[k][j], res.v[i][j] %= mod;
    20     return res;
    21 }
    22 signed main()
    23 {
    24     ll n, k; cin >> n >> k;
    25     matrix a, res;
    26 
    27     a.n = res.n = n;
    28     for (long long i = 1; i <= n; i++)
    29         for (long long j = 1; j <= n; j++)
    30             res.v[i][j] = i == j ? 1 : 0;
    31     for (long long i = 1; i <= n; i++)
    32         for (long long j = 1; j <= n; j++)
    33             cin >> a.v[i][j];
    34     while (k)
    35     {
    36         if (k & 1)
    37             res = mul(res, a);
    38         a = mul(a, a);
    39         k >>= 1;
    40     }
    41     for (long long i = 1; i <= n; i++)
    42         for (long long j = 1; j <= n; j++)
    43             printf("%lld%c", res.v[i][j], j == n ? '
    ' : ' ');
    44 }
  • 相关阅读:
    第11组 Beta版本演示
    第11组 Beta冲刺(5/5)
    第11组 Beta冲刺(4/5)
    第11组 Beta冲刺(3/5)
    第11组 Beta冲刺(2/5)
    第11组 Beta冲刺(1/5)
    第11组 Alpha冲刺(2/6)
    第11组 Alpha冲刺(1/6)
    第11组 团队Git现场编程实战
    团队项目-需求分析报告
  • 原文地址:https://www.cnblogs.com/liuwenhan/p/11649924.html
Copyright © 2011-2022 走看看