J卡在72.73%了,求助😭 #include<bits/stdc++.h> using namespace std; typedef long long ll; #define mod 1000000007 #define maxn 120 #define bite_the_dust continue #define king_crimson  break struct matrix{     ll m[maxn][maxn]; }; matrix matrix_mul(matrix a,matrix b,int n){     matrix c;     for (int i = 0; i <n ; ++i) {         for (int j = 0; j <n ; ++j) {             c.m[i][j]=0;         }     }     for (int i = 0; i <n ; ++i) {         for (int j = 0; j <n ; ++j) {             for (int k = 0; k <n ; ++k) {                 c.m[i][j]=c.m[i][j]+(a.m[i][k]%mod*(b.m[k][j]%mod))%mod;             }             c.m[i][j]%=mod;         }     }     return c; } matrix slow_pow(int n,matrix a,ll pow){     matrix b;     for (int i = 0; i <n ; ++i) {         for (int j = 0; j <n ; ++j) {             if(i==j)b.m[i][j]=1;             else b.m[i][j]=0;         }     }     while(pow){         if(pow&1)b=matrix_mul(b,a,n);         a=matrix_mul(a,a,n);         pow>>=1;     }     return b; } ll guisu_pow(ll a,ll pow){     ll ans=1;     while(pow){         if(pow&1)ans=(ans%mod*(a%mod))%mod;         a=((a%mod)*(a%mod))%mod;         pow>>=1;     }     return ans%mod; } int main() {  ll n,x,y,a,b;  cin>>n>>x>>y>>a>>b;  if(x%mod==0||a%mod==0||y%mod==0){      cout<<0;      return 0;  }     matrix dd,gg;     dd.m[0][0]=0;dd.m[0][1]=1;     dd.m[1][0]=1;dd.m[1][1]=1;     gg.m[0][0]=0;gg.m[0][1]=1;gg.m[0][2]=0;     gg.m[1][0]=1;gg.m[1][1]=1;gg.m[1][2]=1;     gg.m[2][0]=0;gg.m[2][1]=0;gg.m[2][2]=1;     dd=slow_pow(2,dd,n-1);     gg=slow_pow(3,gg,n-1);     ll px=dd.m[0][0]%1000000006,py=dd.m[0][1]%1000000006,pa=(gg.m[0][2]%1000000006*(b%1000000006))%1000000006;     cout<<(guisu_pow(x%mod,px)%mod*(guisu_pow(y%mod,py)%mod)*(guisu_pow(a%mod,pa)%mod))%mod;     return 0; }
点赞 1

相关推荐

叁六玖:你看,最后不是让你加油,就是鼓励你,还祝福你求职顺利。
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务