C++2阶矩阵快速幂 一直有几个被锁测试集通过不了,但自己完全看不出问题在哪,求解答T-T


#include <iostream>

using namespace std;

struct matrixT{
    long long int a[2][2];
};

matrixT mul(matrixT A,matrixT B)
{
    const int mod=1e9+7;
    matrixT C;

    for(int i=0;i<2;i++)
     for(int j=0;j<2;j++)
     {
        C.a[i][j]=0;
        for(int k=0;k<2;k++)
         C.a[i][j]+=((A.a[i][k]%mod)*(B.a[k][j])%mod)%mod;
          C.a[i][j]%=mod;
     }
    return C;
}

matrixT pow(matrixT A,int n)
{
    matrixT res={1,0,0,1};
    res.a[0][0]=1;
    res.a[0][1]=0;
    res.a[1][0]=0;
    res.a[1][1]=1;
    while(n)
    {
        if(n%2) res=mul(res,A);
        A=mul(A,A);
        n/=2;
    }
    return res;
}

int main(){
    matrixT A={0,0,0,0},res={0,0,0,0};
    long long int n;
    const int mod=1e9+7;
    cin>>n;
    cin>>A.a[0][0]>>A.a[0][1]>>A.a[1][0]>>A.a[1][1];
    res=pow(A,n);
    cout<<res.a[0][0]%mod<<' '<<res.a[0][1]%mod<<endl;
    cout<<res.a[0][1]%mod<<' '<<res.a[1][1]%mod<<endl;
    return 0;
  }

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。