Pagini recente » Cod sursa (job #444739) | Cod sursa (job #2600184) | Cod sursa (job #433328) | Cod sursa (job #1258227) | Cod sursa (job #2047174)
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
unsigned long long t, x, y, z, a, b, c, n;
long m[4][4], sol[4][4], asd[4][4], sda[4][4];
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int main(){
f >> t;
for(; t > 0; --t){
f >> x >> y >> z >> a >> b >> c >> n;
m[1][1] = 0, m[1][2] = 1, m[1][3] = 0;
m[2][1] = 0, m[2][2] = 0, m[2][3] = 1;
m[3][1] = c, m[3][2] = b, m[3][3] = a;
for(int i = 1; i <= 3; ++i){
for(int j = 1; j <= 3; ++j){
if(i == j) sol[i][j] = 1, asd[i][j] = 1;
else sol[i][j] = 0, asd[i][j] = 0;
}
}
for(int l = 0; (1<<l) <= n; ++l){
if((1<<l) & n){
for(int i = 1; i <= 3; ++i){
for(int j = 1; j <= 3; ++j){
asd[i][j] = (sol[i][1] * m[1][j] + sol[i][2] * m[2][j] + sol[i][3] * m[3][j]) % mod;
}
}
}
for(int i = 1; i <= 3; ++i){
for(int j = 1; j <= 3; ++j){
sda[i][j] = (m[i][1] * m[1][j] + m[i][2] * m[2][j] + m[i][3] * m[3][j]) % mod;
}
}
for(int i = 1; i <= 3; ++i){
for(int j = 1; j <= 3; ++j){
sol[i][j] = asd[i][j];
m[i][j] = sda[i][j];
}
}
}
g << (sol[1][1] * x + sol[1][2] * y + sol[1][3] * z) % mod << '\n';
}
}