zoukankan      html  css  js  c++  java
  • 循环矩阵

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define ll long long
     4 const int maxn = 505;
     5 ll n,m,d,k,a[maxn];
     6 struct mat{ // 结构体循环矩阵,原矩阵式方阵
     7     ll v[maxn];
     8     mat() {memset(v,0,sizeof(v));} // 构造函数
     9     mat operator*(mat c){ // 重载乘法运算符
    10         mat ans;
    11         // 只需计算出循环矩阵的第一行即可
    12         for(int i = 0 ; i < n ; i++)
    13         for(int j = 0 ; j < n ; j++)
    14             ans.v[i] = ((ans.v[i] + v[j] * c.v[(i - j + n) % n]) % m + m) % m;
    15           return ans;
    16      }
    17 };
    18 // 此处不用担心溢出,况且考虑到不好写单位矩阵,就用的方式啦
    19 mat pow_mod(mat x,ll k){
    20     mat y; y.v[0] = 1;
    21     while(k){
    22         if(k & 1) y = y * x;
    23         x = x * x;
    24         k >>= 1;
    25     }
    26     return y;
    27     // 递归写法
    28     //if(k == 1) return x;
    29     //mat sb = x * x;
    30     //mat ans = pow_mod(sb,k >> 1);
    31     //if(k & 1) ans = ans * x;
    32     //return ans;
    33 }
  • 相关阅读:
    ResourceManager总体架构
    Yarn聚合日志
    Hive参数配置方法
    Hive任务日志及日志调试
    bugku web web3
    bugku web 矛盾
    bugku web web基础
    Bugku 杂项 眼见非实
    Bugku 杂项 啊哒
    JarvisOJ Basic Help!!
  • 原文地址:https://www.cnblogs.com/cyb123456/p/5828119.html
Copyright © 2011-2022 走看看