Pagini recente » Cod sursa (job #383596) | Cod sursa (job #1496014) | Cod sursa (job #702037) | Cod sursa (job #1434943) | Cod sursa (job #2951335)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int mod=666013;
int X, Y, Z, A, B, C;
struct matrice{
long long int val[3][3];
};
matrice prod(matrice a, matrice b)
{
matrice r;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
r.val[i][j]=0;
for(int k=0; k<3; k++)
{
r.val[i][j]+=a.val[i][k]*b.val[k][j];
}
}
return r;
}
matrice exp(matrice b, int e)
{
if(e==1) return b;
if(e%2==1) return prod(b,exp(b,e-1));
matrice p=exp(b, e/2);
return prod(p,p);
}
int fib(int k)
{
matrice M;
M.val[0][0]=0;
M.val[0][1]=1;
M.val[0][2]=0;
M.val[1][0]=0;
M.val[1][1]=0;
M.val[1][2]=1;
M.val[2][0]=C;
M.val[2][1]=B;
M.val[2][2]=A;
M=exp(M, k);
return M.val[0][0]*X+M.val[0][1]*Y+M.val[0][2]*Z;
}
int main()
{
int n; fin >> n;
int k;
for(int i=0; i<n; i++)
{fin >> X >> Y >> Z >> A >> B >> C >> k;
fout << fib(k) << '\n';}
return 0;
}