Pagini recente » Cod sursa (job #2364081) | Cod sursa (job #721043) | Cod sursa (job #948100) | Cod sursa (job #1706899) | Cod sursa (job #3351365)
#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],imat[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;
imat[0][0]=0; imat[0][1]=1; imat[0][2]=0;
imat[1][0]=0; imat[1][1]=0; imat[1][2]=1;
imat[2][0]=c; imat[2][1]=b; imat[2][2]=a;
copymat(rez,unit);
binexp(imat,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;
}