标签:pos drag otto time entity form this nbsp ati
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 5120 Accepted Submission(s): 2197
代码:
#include<bits/stdc++.h>
using namespace std;
const long long mod=2147493647;
struct node
{
long long Martix[7][7];
node operator *(const node&n) const
{
int i,j,k;node sum;
for(i=0;i<7;i++)
for(j=0;j<7;j++)
{
sum.Martix[i][j]=0;
for(k=0;k<7;k++)
sum.Martix[i][j]=(sum.Martix[i][j]+Martix[i][k]*n.Martix[k][j])%mod;
}
return sum;
}
};
int main()
{
long long T,n,a,b;
node A,B,ans;
scanf("%ld",&T);
while(T--)
{
scanf("%lld%lld%lld",&n,&a,&b);
fill(A.Martix[0],A.Martix[0]+49,0);
fill(B.Martix[0],B.Martix[0]+49,0);
fill(ans.Martix[0],ans.Martix[0]+49,0);
for(int i=0;i<7;i++) A.Martix[i][i]=B.Martix[i][i]=1;
ans.Martix[0][0]=2*a%mod;ans.Martix[0][1]=b%mod;
ans.Martix[0][2]=81;ans.Martix[0][3]=27;
ans.Martix[0][4]=9;ans.Martix[0][5]=3;ans.Martix[0][6]=1;
B.Martix[0][0]=0;B.Martix[0][1]=1;B.Martix[1][0]=B.Martix[5][4]=2;
B.Martix[2][1]=B.Martix[6][2]=B.Martix[6][3]=B.Martix[6][4]=B.Martix[6][5]=1;
B.Martix[3][2]=B.Martix[5][2]=4;
B.Martix[4][2]=6;
B.Martix[4][3]=B.Martix[5][3]=3;
n-=2;
while(n)
{
if(n&1) A=A*B;
n>>=1;
B=B*B;
}
ans=ans*A;
printf("%lld\n",ans.Martix[0][1]%mod);
}
system("pause");
return 0;
}
标签:pos drag otto time entity form this nbsp ati
原文地址:https://www.cnblogs.com/VividBinGo/p/11322920.html