Pagini recente » Cod sursa (job #316081) | Cod sursa (job #1715773) | Cod sursa (job #315310) | Cod sursa (job #2202939) | Cod sursa (job #3179708)
#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 x,int y,int z,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(x, y, z, n-3);
int k = x * v[0][2] + y * v[1][2] + z * v[2][2];
cout << k << endl;
}
}