Pagini recente » Cod sursa (job #354292) | Cod sursa (job #2679872) | Cod sursa (job #1282751) | Cod sursa (job #469949) | Cod sursa (job #1925725)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int mod = 666013;
void Inmultire(int a[3][3], int b[3][3]);
void Putere(int k);
int T, A, B, C, X, Y, Z, N;
int ans[3][3], I[3][3], c[3][3], aux[3][3];
int main()
{
fin >> T;
while( T-- )
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
I[0][0] = A, I[0][1] = 1, I[0][2] = 0;
I[1][0] = B, I[1][1] = 0, I[1][2] = 1;
I[2][0] = C, I[2][1] = 0, I[2][2] = 0;
memcpy(aux, I, sizeof(I));
Putere( N - 3 );
ans[0][0] = Z, ans[0][1] = 0, ans[0][2] = 0;
ans[1][0] = 0, ans[1][1] = Y, ans[1][2] = 0;
ans[2][0] = 0, ans[2][1] = 0, ans[2][2] = X;
Inmultire(ans, aux);
fout << ans[0][0] + ans[1][0] + ans[2][0] << '\n';
}
return 0;
}
void Inmultire(int a[3][3], int b[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] += (a[i][k] * b[k][j]) % mod;
c[i][j] = c[i][j] % mod;
}
}
memcpy(a, c, sizeof(c));
};
void Putere(int k)
{
if ( !k ) return;
if ( k % 2 )
Inmultire(aux, I);
Inmultire(I, I);
Putere(k / 2);
};