Pagini recente » Cod sursa (job #2528996) | Cod sursa (job #380350) | Cod sursa (job #2357511) | Cod sursa (job #3231868) | Cod sursa (job #2329776)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
long long M[4][4];
long long X, Y, Z, A, B, C, N;
void intializare(){
M[1][1] = 0;
M[2][1] = 1;
M[3][1] = 0;
M[1][2] = 0;
M[2][2] = 0;
M[3][2] = 1;
M[1][3] = C;
M[2][3] = B;
M[3][3] = A;
}
void inmultesteMatrice(long long rez[4][4], long long a[4][4], long long b[4][4]){
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j)
rez[i][j] = 0;
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j)
for(int k = 1; k <= 3; ++k)
rez[i][j] += (a[i][k] * b[k][j]) % MOD;
}
void ridicLaPut(int p){
if(p == 1){
intializare();
return;
}
long long copie[4][4];
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j)
copie[i][j] = M[i][j];
ridicLaPut(p / 2);
long long aux[4][4];
inmultesteMatrice(aux, M, M);
if(p % 2 == 0){
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j)
M[i][j] = aux[i][j];
return;
}
long long aux2[4][4];
inmultesteMatrice(aux2, aux, copie);
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j)
M[i][j] = aux2[i][j];
return;
}
int main()
{
int t;
cin >> t;
while(t--){
cin >> X >> Y >> Z >> A >> B >> C >> N;
intializare();
ridicLaPut((N - 2));
cout << (X * M[1][3] % MOD+ Y * M[2][3] % MOD + Z * M[3][3] % MOD) % MOD << '\n';
}
return 0;
}