Pagini recente » Cod sursa (job #1925125) | Cod sursa (job #577166) | Cod sursa (job #3137884) | Cod sursa (job #3166161) | Cod sursa (job #3256809)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const int MOD=666013;
void multiply2(int a[3][3], int b[3][3])
{
long long c[3][3];
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
c[i][j]=0;
for (int k=0; k<3; k++) {
c[i][j]+=1LL*a[i][k]*b[k][j]; //% aici e mai costisitor decat adunarea long long
}
c[i][j]%=MOD; //% dureaza > long long
}
}
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
a[i][j]=c[i][j];
}
}
}
void multiply(int a[1][3], int b[3][3])
{
long long c[1][3];
for (int i=0; i<1; i++) {
for (int j=0; j<3; j++) {
c[i][j]=0;
for (int k=0; k<3; k++) {
c[i][j]+=1LL*a[i][k]*b[k][j]; //% aici e mai costisitor decat adunarea long long
}
c[i][j]%=MOD; //% dureaza > long long
}
}
for (int i=0; i<1; i++) {
for (int j=0; j<3; j++) {
a[i][j]=c[i][j];
}
}
}
int main()
{
fin.tie(0); fin.sync_with_stdio(false);
int x, y, z, a, b, c, n, t;
fin>>t;
while (t--) {
fin>>x>>y>>z>>a>>b>>c>>n;
int iepuri[1][3]={{x, y, z}};
int smecherie[3][3] = {{0, 0, c}, {1, 0, b}, {0, 1, a}};
while (n) {
if (n%2==1) {
multiply(iepuri, smecherie);
//display_mat(iepuri, 1, 3);
//display_mat(m, 3, 3);
}
multiply2(smecherie, smecherie);
n/=2;
}
if (n==0||n==1||n==2) fout<<iepuri[0][n]<<'\n';
else {
fout<<iepuri[0][n]<<'\n';
}
}
return 0;
}
/*
(x, y, z) * (0, 0, c) = (y, z, ax+by+cz)
(1, 0, b)
(0, 1, a)
*/