• 快速幂(含二阶方阵类)模板



    整体在一个命名空间POW中,使用时应加上POW :: ****

     1 namespace POW{
     2     typedef int t; //使用时可将"int"修改为矩阵中存储的数据类型
     3     const t MOD = t(1e9 + 7);//改为快速幂要求的模数
     4     
     5     template <class T>
     6         T powmod(T a, int n, T mod){
     7             T ans = a;
     8             --n;
     9             while(n){
    10                 if(n & 1)ans = ans * a % MOD;
    11                 a = a * a % MOD;
    12                 n >>= 1;
    13             }
    14             return ans;
    15         }
    16     //powmod(T a, int n, T mod)
    17     
    18     struct Mat{
    19         t a, b, c, d;//需要时可以改成二维数组并修改下面函数
    20         Mat(t w,t x,t y,t z):a(w),b(x),c(y),d(z){}
    21         Mat operator *(Mat &B)const{
    22             t w, x, y, z;
    23             w = (((LL)a * B.a)%MOD + ((LL)b * B.c)%MOD)%MOD;
    24             x = (((LL)a * B.b)%MOD + ((LL)b * B.d)%MOD)%MOD;
    25             y = (((LL)c * B.a)%MOD + ((LL)d * B.c)%MOD)%MOD;
    26             z = (((LL)c * B.b)%MOD + ((LL)d * B.d)%MOD)%MOD;
    27             return Mat(w, x, y, z);
    28         }
    29     };//struct Mat
    30     
    31 }//namespace POW

  • 相关阅读:
    数据库内连接、外连接与自连接
    安装MySQL容易出现的问题
    安装MySQL时提示3306端口已被占用的解决方案
    Smoke Testing
    冒烟测试与BVT测试
    以操作系统的角度述说线程与进程
    Notepad++配置Python开发环境
    Notepad++使用教程
    Sublime Text 皮肤插件安装
    小狼毫输入法常用设置
  • 原文地址:https://www.cnblogs.com/Asm-Definer/p/4005442.html
Copyright © 2020-2023  润新知