Pagini recente » Cod sursa (job #955300) | Cod sursa (job #1408425) | Cod sursa (job #1478602) | Cod sursa (job #1413854) | Cod sursa (job #2665704)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD=666013;
int x,y,z,A,B,C,n;
struct Mat
{
int mat[3][3]= {0};
};
Mat inmultime(Mat a,Mat b)
{
Mat rez;
int i,j,x;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
rez.mat[i][j] = 0;
for(x=0; x<3; x++)
{
rez.mat[i][j] += (1LL*a.mat[i][x]*b.mat[x][j])%MOD;
}
}
}
return rez;
}
Mat putere(Mat a,int e)
{
Mat rez;
for(int i=0; i<3; i++)
rez.mat[i][i]=1;
while(e)
{
if(e%2==1)
rez=inmultime(rez,a);
a=inmultime(a,a);
e=e/2;
}
return rez;
}
void print(Mat a)
{
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
cout<<a.mat[i][j]<<" ";
cout<<"\n";
}
}
void read()
{
int t;
fin>>t;
while(t)
{
fin>>x>>y>>z>>A>>B>>C>>n;
Mat M;
M.mat[0][2]=C;
M.mat[1][0]=1;
M.mat[1][2]=B;
M.mat[2][1]=1;
M.mat[2][2]=A;
Mat X=putere(M,n-2);
fout<<X.mat[0][2]*x+X.mat[1][2]*y+X.mat[2][2]*z<<"\n";
t--;
}
}
int main()
{
read();
return 0;
}