int main()
{
int t;
matrix ans,base;
scanf("%d",&t);
LL n,a,b;
while(t--)
{
scanf("%I64d%I64d%I64d",&n,&a,&b);
memset(ans.m,0,sizeof(ans.m));
ans.m[0][0]=a%MOD;ans.m[1][0]=b%MOD;ans.m[2][0]=81;ans.m[3][0]=27;ans.m[4][0]=9;ans.m[5][0]=3;ans.m[6][0]=1;//n=1
base.m[0][0]=0;base.m[0][1]=1;base.m[0][2]=0;base.m[0][3]=0;base.m[0][4]=0;base.m[0][5]=0;base.m[0][6]=0;
base.m[1][0]=2;base.m[1][1]=1;base.m[1][2]=1;base.m[1][3]=0;base.m[1][4]=0;base.m[1][5]=0;base.m[1][6]=0;
base.m[2][0]=0;base.m[2][1]=0;base.m[2][2]=1;base.m[2][3]=4;base.m[2][4]=6;base.m[2][5]=4;base.m[2][6]=1;
base.m[3][0]=0;base.m[3][1]=0;base.m[3][2]=0;base.m[3][3]=1;base.m[3][4]=3;base.m[3][5]=3;base.m[3][6]=1;
base.m[4][0]=0;base.m[4][1]=0;base.m[4][2]=0;base.m[4][3]=0;base.m[4][4]=1;base.m[4][5]=2;base.m[4][6]=1;
base.m[5][0]=0;base.m[5][1]=0;base.m[5][2]=0;base.m[5][3]=0;base.m[5][4]=0;base.m[5][5]=1;base.m[5][6]=1;
base.m[6][0]=0;base.m[6][1]=0;base.m[6][2]=0;base.m[6][3]=0;base.m[6][4]=0;base.m[6][5]=0;base.m[6][6]=1;
ans=mul(pow(base,n-1),ans);
LL out=ans.m[0][0];
printf("%I64d\n",out);
}
return 0;
}
HDU 5950
最新推荐文章于 2022-10-01 15:27:34 发布