Pagini recente » Cod sursa (job #2715350) | Cod sursa (job #2522326) | Cod sursa (job #3179710)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
long long v[3][3],i,j,n,a[3][3];
void pmat(int nr)
{
int k;
while (nr)
{
if (nr % 2 == 1) // v=v*a
{
long long c[3][3] = { 0,0,0,0,0,0,0,0,0 };
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
for (k = 0; k < 3; k++)
c[i][j] += v[i][k] * a[k][j] % 666013;
memcpy(v, c, sizeof(c));
/*cout << "NR = " << nr << endl;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
cout << v[i][j] << ' ';
cout << endl;
}*/
}
long long c[3][3] = { 0,0,0,0,0,0,0,0,0 }; //a=a*a
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
for (k = 0; k < 3; k++)
c[i][j] += a[i][k] * a[k][j] % 666013;
memcpy(a, c, sizeof(c));
nr /= 2;
}
}
int main()
{
int t;
cin >> t;
while (t--)
{
int x, y, z, a1, b, c;
cin >> x >> y >> z >> a1 >> b >> c >> n;
v[0][0] = 0; v[0][1] = 0; v[0][2] = c;
v[1][0] = 1; v[1][1] = 0; v[1][2] = b;
v[2][0] = 0; v[2][1] = 1; v[2][2] = a1;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
a[i][j] = v[i][j];
pmat(n-3);
long long k = x * v[0][2] + y * v[1][2] + z * v[2][2] % 666013;
cout << k << endl;
}
}