Pagini recente » Cod sursa (job #2420737) | Cod sursa (job #2753234) | Cod sursa (job #2957868) | Cod sursa (job #2052036) | Cod sursa (job #3261480)
#include <fstream>
using namespace std;
const int MOD = 666013;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
void produs(int p[3][3], int a[3][3])
{
int aux[3][3];
aux[0][0] = ((long long)p[0][0] * a[0][0] + (long long)p[0][1] * a[1][0] + (long long)p[0][2] * a[2][0]) % MOD;
aux[0][1] = ((long long)p[0][0] * a[0][1] + (long long)p[0][1] * a[1][1] + (long long)p[0][2] * a[2][1]) % MOD;
aux[0][2] = ((long long)p[0][0] * a[0][2] + (long long)p[0][1] * a[1][2] + (long long)p[0][2] * a[2][2]) % MOD;
aux[1][0] = ((long long)p[1][0] * a[0][0] + (long long)p[1][1] * a[1][0] + (long long)p[1][2] * a[2][0]) % MOD;
aux[1][1] = ((long long)p[1][0] * a[0][1] + (long long)p[1][1] * a[1][1] + (long long)p[1][2] * a[2][1]) % MOD;
aux[1][2] = ((long long)p[1][0] * a[0][2] + (long long)p[1][1] * a[1][2] + (long long)p[1][2] * a[2][2]) % MOD;
aux[2][0] = ((long long)p[2][0] * a[0][0] + (long long)p[2][1] * a[1][0] + (long long)p[2][2] * a[2][0]) % MOD;
aux[2][1] = ((long long)p[2][0] * a[0][1] + (long long)p[2][1] * a[1][1] + (long long)p[2][2] * a[2][1]) % MOD;
aux[2][2] = ((long long)p[2][0] * a[0][2] + (long long)p[2][1] * a[1][2] + (long long)p[2][2] * a[2][2]) % MOD;
p[0][0] = aux[0][0];
p[0][1] = aux[0][1];
p[0][2] = aux[0][2];
p[1][0] = aux[1][0];
p[1][1] = aux[1][1];
p[1][2] = aux[1][2];
p[2][0] = aux[2][0];
p[2][1] = aux[2][1];
p[2][2] = aux[2][2];
}
void putere(int p[3][3], int a[3][3], int n)
{
p[0][0] = p[1][1] = p[2][2] = 1;
p[0][1] = p[0][2] = 0;
p[1][0] = p[1][2] = 0;
p[2][0] = p[2][1] = 0;
while(n != 0)
{
int cifb = n % 2;
if(cifb != 0)
{
produs(p, a);
}
produs(a, a);
n /= 2;
}
}
int main()
{
int t, x, y, z, a, b, c, n;
fin >> t;
for(int i = 0; i < t; i++)
{
fin >> x >> y >> z >> a >> b >> c >> n;
int p[3][3], m[3][3] = {{0, 1, 0}, {0, 0, 1}, {c, b, a}};
putere(p, m, n);
fout << p[0][0] * x + p[0][1] * y + p[0][2] * z << "\n";
}
return 0;
}