Pagini recente » Cod sursa (job #457630) | Cod sursa (job #2318861) | Cod sursa (job #1149621) | Cod sursa (job #70305) | Cod sursa (job #1515291)
#include <iostream>
#include <fstream>
using namespace std;
#define MOD 666013
ifstream in ("iepuri.in");
ofstream out("iepuri.out");
int mat[4][4],aux[4][4],sp[4][4],ans[4][4];
inline void mult(int m1[4][4],int m2[4][4], int aux[4][4])
{
for (int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{ aux[i][j]=0;
for (int k=1;k<=3;k++)
aux[i][j]=(aux[i][j]+1LL*m1[i][k]*m2[k][j])%MOD;
}
}
inline void exp(int mat[4][4],int put,int a,int b,int c)
{ int z[4][4];
z[2][1]=z[3][2]=1;
z[2][2]=z[2][3]=z[3][1]=z[3][3]=0;
z[1][1]=a;
z[1][2]=b;
z[1][3]=c;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
aux[i][j]=0;
if(put<=1)return;
exp(mat,put/2,a,b,c);
mult(mat,mat,aux);
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
mat[i][j]=aux[i][j];
if(put%2)
mult(mat,z,aux);
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
mat[i][j]=aux[i][j];
}
int main()
{ int t;
int x,y,z,a,b,c,n,i,j,k,lb;
in>>t;
for(lb=1;lb<=t;lb++)
{
in>>x>>y>>z>>a>>b>>c>>n;
mat[2][1]=mat[3][2]=1;
mat[2][2]=mat[2][3]=mat[3][1]=mat[3][3]=0;
mat[1][1]=a;
mat[1][2]=b;
mat[1][3]=c;
exp(mat,n-1,a,b,c);
sp[1][1]=z;
sp[2][1]=y;
sp[3][1]=x;
for(i=1;i<=3;i++)
{
ans[i][1]=0;
for(k=1;k<=3;k++)
ans[i][1]=(ans[i][1]+1LL*mat[i][k]*sp[k][1])%MOD;
}
out<<ans[2][1];
out<<'\n';
}
return 0;
}