Pagini recente » Cod sursa (job #2713549) | Cod sursa (job #1742956) | Cod sursa (job #937033) | Cod sursa (job #1625599) | Cod sursa (job #1925743)
#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;
long long int 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;
memset(ans, 0, sizeof(ans));
memset(aux, 0, sizeof(aux));
aux[0][0] = aux[1][1] = aux[2][2] = 1;
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;
Putere( N - 2 );
ans[0][0] = Z, ans[0][1] = Y, ans[0][2] = X;
Inmultire(ans, aux);
fout << ans[0][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] += ( 1LL * 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);
};