码迷,mamicode.com
首页 > 其他好文 > 详细

矩阵模版(新)

时间:2016-08-27 14:08:02      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

#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;
}

 

矩阵模版(新)

标签:

原文地址:http://www.cnblogs.com/wsruning/p/5812882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!