Pagini recente » Cod sursa (job #3130881) | Cod sursa (job #384848) | Cod sursa (job #849078) | Cod sursa (job #2144825) | Cod sursa (job #2953376)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long int y[4][4], Mat[4], MOD=666013, x[4][4];
void Inm(long long int w[4][4])
{long long int z[4][4];
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
z[i][j]=0;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
{z[i][j]+=(y[i][k]*w[k][j])%MOD;
z[i][j]%=MOD;
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
y[i][j]=z[i][j];
}
void DQ(int n)
{if(n==1)
{for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
y[i][j]=x[i][j];
}
else
{DQ(n/2);
Inm(y);
if(n%2==1)Inm(x);
}
}
int main()
{ long long int T, X, Y, Z, A, B, C, n;
fin>>T;
for(int i=1;i<=T;i++)
{fin>>X>>Y>>Z>>A>>B>>C>>n;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
y[i][j]=0;
x[1][2]=x[2][3]=1;
x[3][1]=C, x[3][2]=B, x[3][3]=A;
Mat[1]=X, Mat[2]=Y, Mat[3]=Z;
DQ(n-2);
Mat[3]=((y[3][1]*Mat[1])%MOD)+((y[3][2]*Mat[2])%MOD)+((y[3][3]*Mat[3])%MOD);
fout<<Mat[3]%MOD<<"\n";
}
return 0;
}