Pagini recente » Cod sursa (job #722622) | Cod sursa (job #436227) | Cod sursa (job #3323374) | Cod sursa (job #1920406) | Cod sursa (job #3351367)
#include <bits/stdc++.h>
using namespace std;
const int MOD=666013;
int t,x,y,z,a,b,c,n;
int rez[3][3],unit[3][3],mat[3][3],aux[3][3];
void copymat(int a[3][3], int b[3][3]) {
for (int i=0; i<3; ++i)
for (int j=0; j<3; ++j)
a[i][j]=b[i][j];
}
void binexp(int base[3][3], int exp) {
while (exp) {
if (exp&1) {
for (int i=0; i<3; ++i)
for (int j=0; j<3; ++j) {
int s=0;
for (int k=0; k<3; ++k)
s+=base[i][k]*1LL*rez[k][j]%MOD;
aux[i][j]=s;
}
copymat(rez,aux);
}
exp>>=1;
for (int i=0; i<3; ++i)
for (int j=0; j<3; ++j) {
int s=0;
for (int k=0; k<3; ++k)
s+=base[i][k]*1LL*base[k][j]%MOD;
aux[i][j]=s;
}
copymat(base,aux);
}
}
int main() {
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
fin>>t;
unit[0][0]=unit[1][1]=unit[2][2]=1;
while (t--) {
fin>>x>>y>>z>>a>>b>>c>>n;
mat[0][0]=0; mat[0][1]=1; mat[0][2]=0;
mat[1][0]=0; mat[1][1]=0; mat[1][2]=1;
mat[2][0]=c; mat[2][1]=b; mat[2][2]=a;
copymat(rez,unit);
binexp(mat,n-2);
int ans=(x*1LL*rez[2][0]%MOD + y*1LL*rez[2][1]%MOD + z*1LL*rez[2][2]%MOD)%MOD;
fout<<ans<<'\n';
}
fin.close();
fout.close();
return 0;
}