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 }
  • 相关阅读:
    Django-配置Mysql
    Django-manage.py shell命令
    Codeforces 1516B AGAGA XOOORRR
    sitemesh入门教程
    养生好习惯
    解决idea自动导入类String总是导入sun.org.apache.xpath.internal.operations包下的String
    [C#]浅谈协变与逆变
    [C#]跨模块的可选参数与常量注意事项
    [C#]LockBits使用笔记
    1.在校研究生申请软件著作权(学校为第一著作人)
  • 原文地址:https://www.cnblogs.com/liuwenhan/p/11649924.html
Copyright © 2011-2022 走看看