#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天,您在需要使用的时候【私信】联系我,我会为您补发。