Pagini recente » Cod sursa (job #2372892) | Cod sursa (job #2530566) | Cod sursa (job #2036649) | Cod sursa (job #1783333) | Cod sursa (job #1802261)
#include <fstream>
#define MAT 3
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long int** inmultire_matrici(long long int** A, long long int** B)
{
long long int **C = new long long int*[MAT];
for (int i = 0; i < MAT; ++i)
{
C[i] = new long long int[MAT];
for (int j = 0; j < MAT; ++j)
{
C[i][j] = 0;
for (int ik = 0; ik < MAT; ++ik)
C[i][j] += (A[i][ik] * 1LL * B[ik][j]) % MOD;
}
}
return C;
}
long long int** ridica_la_putere(long long int** A, int n)
{
if (n == 0)
return A;
if ((n - 1) % 2)
return inmultire_matrici(A, ridica_la_putere(A, n - 1));
long long int** B = ridica_la_putere(A, n / 2);
return inmultire_matrici(B, B);
}
int main()
{
int a, b, c, x, y, z, n, k;
f >> k;
for (int i = 0; i < k; ++i)
{
f >> x >> y >> z >> a >> b >> c >> n;
long long int** A = new long long int*[MAT];
long long int** B;
for (int j = 0; j < MAT; ++j)
A[j] = new long long int[MAT];
A[0][0] = 0;
A[0][1] = 0;
A[1][1] = 0;
A[2][0] = 0;
A[0][2] = c;
A[1][0] = A[2][1] = 1;
A[1][2] = b;
A[2][2] = a;
B = ridica_la_putere(A, n - 3);
int nr_iepuri = (((x * 1LL * B[0][2]) % MOD) + ((y * 1LL * B[1][2]) % MOD) + ((z * 1LL * B[2][2]) % MOD)) % MOD;
g << nr_iepuri << "\n";
}
f.close();
g.close();
return 0;
}