矩阵模版(新)

#define repf(i,a,b) for(int i=(a);i<=(b);i++)

using namespace std;

typedef long long ll;

const int N = 0;
const int SIZE = 4;

int l, MOD;

struct Mat{
    ll v[SIZE][SIZE];   // value of matrix

    Mat() {
        memset(v, 0, sizeof(v));
    }

    void init(ll _v) {
        repf (i, 0, SIZE)
            v[i][i] = _v;
    }
};

Mat operator * (Mat a, Mat b) {
    Mat c;
    repf (i, 0, SIZE - 1) {
        repf (j, 0, SIZE - 1) {
            c.v[i][j] = 0;
            repf (k, 0, SIZE - 1) {
                c.v[i][j] += (a.v[i][k] * b.v[k][j]) % MOD;
                c.v[i][j] %= MOD;
            }
        }
    }
    return c;
}

Mat operator ^ (Mat a, ll k) {
    Mat c;
    c.init(1);
    while (k) {
        if (k&1) c = a * c;
        a = a * a;
        k >>= 1;
    }
    return c;
}
时间: 2024-07-28 20:21:24

矩阵模版(新)的相关文章

矩阵专题(续)

哈哈哈,失踪人员回归.最近总是在忙一些乱七八糟的事情,终于有了一段空闲时间可以刷刷题了.学姐给我准备了kuangbin先生的矩阵专题,作为我的矩阵终结专题.(初学者请先看我的矩阵专题前三篇) 第一题 CodeForces 450B 分析:这道题看似是一道矩阵题,但是实际上是一道模拟题.看题目给出的公式 f(i)=f(i-1)+f(i+1),i>=2,那么转换一下得到了f(i)=f(i-1)-f(i-2),i>=3,当然这题可以使用矩阵快速幂来算,但是多此一举.不妨将f(1)=x  f(2)=y

matlab矩阵内存预分配

matlab矩阵内存预分配就意味着,划定一个固定的内存块,各数据可直接按"行.列指数"存放到对应的元素中.若矩阵中不预配置内存.则随着"行.列指数"的变大.MATLAB就必须不断地为矩阵找到新的"空的内存",从而导致"建造矩阵"的速度大大下降. Hilbert矩阵的数学描写叙述 Hilbert矩阵是著名的"坏条件"矩阵,当中其第(i,j)元素的表达式是a(i,j)=1/(i+j-1). 代码比較: % 20

矩阵快速幂专题(一)

最近闲来无事,准备集中精力刷一波数论与图论.矩阵快速幂是数论里面的重要组成部分,值得我好好学习一下.因为题目比较多,分析也比较多,所以将此专题分成几个部分.做完这一专题,可能会暂时转向图论部分,然后等我组合数学学得差不多了,再回过头来继续做数论题. 矩阵快速幂算法的核心思想是将问题建模转化为数学模型(有一些简单题目是裸的矩阵模型,但是大部分难题就是难在要构造矩阵,用矩阵方法解决问题),推倒递推式,构造计算矩阵,用快速幂的思想求解矩阵A的n次方取mod,从而得到矩阵里面你需要的数据. 矩阵快速幂问

【矩阵与行列式】矩阵和行列式学习笔记

开始从ToDoList里挑东西来杀. 感觉矩阵和行列式这两个跟很多东西都有关而且接触最少 所以先从它们开始补>w< P.S.看了很多资料,他们对矩阵和行列式这些东西的介绍都很丧病-我会尽量用通俗的语言来写我的笔记= =如果您不喜欢这种风格QAQ那我也没办法了请隔壁看别人的吧 ---------线割分是我>w<--------------– 什么是矩阵? 矩阵是n*m个数在n*m这个二维区域内的一个排列,是一个横纵排列的二维数字表格. 也就是说,矩阵只是一些数的一种存储形式. 通常我

HDU4887_Endless Punishment_BSGS+矩阵快速幂+哈希表

2014多校第一题,当时几百个人交没人过,我也暴力交了几发,果然不行. 比完了去学习了BSGS才懂! 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4887 Endless Punishment Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 52    Accepted Submissi

使用openstack的虚拟机模版注意事项

openstack虚拟机模版(flavor)是一个非常奇怪的设计.讲讲我測试时遇到的问题,尽管说在project应用中虚拟机模版在開始时就定制好.后期可能做改动,可是改动时一定要注意,有以下几种情况: 1.使用m1.small模版启动个虚拟机,改动模版m1.small,虚拟机重新启动后还是使用原有模版. 2.使用m1.small模版启动个虚拟机.给模版m1.small加入extra_specs,比方限定带宽key为quota:vif_inbound_average, value为1024(k为单

Android自定义控件——3D画廊和图像矩阵

转载请注明出处:http://blog.csdn.net/allen315410/article/details/39932689 1.3D画廊的实现 我们知道android系统已经为我们提供好了一个展示图片的"容器"--Gallery,但是这个Gallery显示的效果是平面化的,动态效果不强.这里,我们动手做一个自定义的Gallery组件,实现图片的3D效果展示,想想应该不错吧,先看看效果图: 实现这个3D效果的Gallery该怎么做呢?首先,分析一下, 1,展示图片,系统自带Gal

[matlab]改变矩阵的大小并保存到txt文件

要完成的任务是,加载一个保存在txt文件中的矩阵, 并把它扩大10倍,并且要再次保存回去 %加载txt文件 >load('Matrix.txt'); %扩大10倍 repmat(Matrix,row column) % 这里的matrix 参数是要对其进行修改的matrix, 其中row是要新建的一个矩阵的行数, 而column是新建矩阵的列数 >Matrix = repmat(Matrix,10,1); % 这个就相当于  将Matrix矩阵 复制了10份,并且是按列排列的, 等同于 Mat

Android图片处理:颜色矩阵和坐标变换矩阵

UI开发过程中,我们经常需要对图片进行处理,常见的如贴图,复杂一些的还有位置变换.旋转.滤镜特效等,下面简单介绍一下关于图片处理的一些基本知识和原理. 1 基本概念对于图片的处理,最常使用到的数据结构是Bitmap,它包含了一张图片所有的数据,这些数据数据包括那些内容呢?简单说来就是由点阵和颜色值组成的,所谓点阵就是一个在概念上是Width * Height的矩阵,每一个元素对应着图片的一个像素,也就是说,点阵保存着图片的空间位置信息:而颜色值即ARGB,分别对应透明度.红.绿.蓝这四个通道分量