Pagini recente » Cod sursa (job #2480309) | Cod sursa (job #2476097) | Cod sursa (job #1646639) | Cod sursa (job #2469036) | Cod sursa (job #2491486)
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long n, a, b, c, x, y, z, t, mat[3][3];
void copiere(long long a[][3], long long b[][3]){
for(int i = 0;i<3;i++)
for(int j = 0;j<3;j++)
a[i][j] = b[i][j];
}
void inmultire(long long a[][3], long long b[][3], long long c[][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] % 666013;
c[i][j] %= 666013;
}
}
void ridicare(long long r[][3], int putere){
if(putere == 1)
return;
long long u[3][3], w[3][3];
copiere(u, r);
copiere(w, r);
ridicare(u, putere/2);
inmultire(u, u, r);
if(putere%2 == 1){
inmultire(r, w, u);
copiere(r, u);
}
}
int main(){
fin>>t;
while(t--){
fin>>x>>y>>z>>a>>b>>c>>n;
mat[0][0] = mat[0][1] = mat[1][1] = mat[2][0] = 0;
mat[1][0] = mat[2][1] = 1;
mat[0][2] = c, mat[1][2] = b, mat[2][2] = a;
ridicare(mat, n-2);
fout<< (mat[0][2]*x%666013 + mat[1][2]*y%666013 + mat[2][2]*z%666013)<<"\n";
}
return 0;
}