Pagini recente » Cod sursa (job #997581) | Cod sursa (job #2982607) | Cod sursa (job #2443081) | Cod sursa (job #2545686) | Cod sursa (job #2491822)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
long long b[5][5],a[5][5],rasp[5][5],c[5][5],aux[5][5];
long long n,X,Y,Z,A,B,C;
void reset_abc()
{
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
if(i==j) b[i][j]=1;
else b[i][j]=0;
a[1][1]=A;
a[1][2]=B;
a[1][3]=C;
a[2][1]=a[3][2]=1;
a[2][2]=a[2][3]=a[3][1]=a[3][3]=0;
c[1][1]=Z;
c[2][1]=Y;
c[3][1]=X;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
rasp[i][j]=0;
}
long long lgput(long long put)
{
while(put!=0)
{
if(put%2==1)
{
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
aux[i][j]=0;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
aux[i][j]=(aux[i][j]+b[i][k]*a[k][j])%MOD;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
b[i][j]=aux[i][j];
put--;
}
else if(put%2==0)
{
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{
aux[i][j]=a[i][j];
a[i][j]=0;
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
a[i][j]=(a[i][j]+aux[i][k]*aux[k][j])%MOD;
put/=2;
}
}
}
int main()
{
long long T;
fin >> T;
for(int t=1;t<=T;t++)
{
fin >> X >> Y >> Z >> A >> B >> C >> n;
reset_abc();
lgput(n-2);
for(int i=1;i<=3;i++)
for(int j=1;j<=1;j++)
for(int k=1;k<=3;k++)
rasp[i][j]=(rasp[i][j]+b[i][k]*c[k][j])%MOD;
fout << rasp[1][1]%MOD << '\n';
}
return 0;
}