Pagini recente » Cod sursa (job #1119228) | Cod sursa (job #229447) | Cod sursa (job #1642721) | Cod sursa (job #1360288) | Cod sursa (job #2866395)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int t, n, xs, ys, zs, a, b, c;
int f[5][5], r[5][5], bz[5][5], aux[5][5];
void copiere(int x[5][5], int y[5][5]) {
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
x[i][j]=y[i][j];
}
void init() {
f[0][0]=a;
f[0][1]=b;
f[0][2]=c;
f[1][0]=1;
f[1][1]=0;
f[1][2]=0;
f[2][0]=0;
f[2][1]=1;
f[2][2]=0;
copiere(r, f);
copiere(bz, f);
}
void mult(int x[5][5], int y[5][5], int z[5][5]) {
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
z[i][j]=0;
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
for (int k=0; k<3; k++)
z[i][j]=(z[i][j]+(x[i][k]*y[k][j])%MOD)%MOD;
}
void puteri() {
if (n==0)
fout<<xs<<"\n";
else if (n==1)
fout<<ys<<"\n";
else if (n==2)
fout<<zs<<"\n";
else {
n-=2;
while (n) {
if (n%2==0) {
mult(bz, bz, aux);
copiere(bz, aux);
n/=2;
} else {
mult(r, f, aux);
copiere(r, aux);
n--;
}
}
/**
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++)
fout<<r[i][j]<<" ";
fout<<"\n";
}
**/
fout<<((zs*r[0][0])%MOD+(ys*r[0][1])%MOD+(xs*r[0][2])%MOD)%MOD<<"\n";
}
}
void citire() {
fin>>t;
for (int i=0; i<t; i++) {
fin>>xs>>ys>>zs>>a>>b>>c>>n;
init();
puteri();
}
}
int main() {
citire();
return 0;
}