zoukankan      html  css  js  c++  java
  • 快速幂(含二阶方阵类)模板


    整体在一个命名空间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

  • 相关阅读:
    groovy的效率问题
    强大的模板引擎开源软件NVelocity
    每个人应该知道的NVelocity用法
    NVelocity语法常用指令
    CS0016: 未能写入输出文件“c:WINDOWSMicrosoft.NETFramework.。。”--“拒绝访问
    C# 数组基础知识
    c#中的 数组
    网络编程之webclient和httpwebrequest的使用
    HttpWebRequest和WebClient的区别
    C#如何使用SplitContainer控件实现上下分隔
  • 原文地址:https://www.cnblogs.com/Asm-Definer/p/4005442.html
Copyright © 2011-2022 走看看