hdu1575(矩阵快速幂入门题)

题目链接
hdu1575

struct mat{
    int m[maxn][maxn];
}unit;//矩阵的数据结构
**重载矩阵*强调内容*乘法**
mat operator * (mat a,mat b)
{
    mat ret;
    ll x;
    for(int i=0;ifor(int j=0;j0;
        for(int k=0;kmod((ll)a.m[i][k]*b.m[k][j]);
        ret.m[i][j]=mod(x);
    }
    return ret;
}
#include
#include
using namespace std;
#define mod(x) ((x)%9973)
typedef long long ll;
const int maxn =11;
int n;
struct mat{
    int m[maxn][maxn];
}unit;
//矩阵乘法
mat operator * (mat a,mat b)
{
    mat ret;
    ll x;
    for(int i=0;ifor(int j=0;j0;
        for(int k=0;kreturn ret;
}
void init_unit()
{
    for(int i=0;i1;
    return ;
}
mat pow_mat(mat a,ll n)
{
    mat ret=unit;
    while(n)
    {
        if(n&1)
        {
            ret= ret*a;
        }
        n>>=1;
        a=a*a;
    }
    return ret;
}
int main()
{
    ios::sync_with_stdio(false);
    int x;
    int T;
    cin>>T;
    init_unit();
    while(T--&&cin>>n>>x)
    {
        mat a;
        for(int i=0;ifor(int j=0;jcin>>a.m[i][j];
        a=pow_mat(a,x);
        ll ans=0;
        for(int i=0;i9973;
        cout<return 0;
}

你可能感兴趣的:(数论)