Pagini recente » Cod sursa (job #2789453) | Cod sursa (job #612233) | Cod sursa (job #366573) | Cod sursa (job #998446) | Cod sursa (job #2676001)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long n;
int t, a, b, c, x, y, z, A[3][3], rez[3][3], sol, rez_aux[3][3], modu=666013;
void initrez()
{
rez[0][0]=1;
rez[0][1]=0;
rez[0][2]=0;
rez[1][0]=0;
rez[1][1]=1;
rez[1][2]=0;
rez[2][0]=0;
rez[2][1]=0;
rez[2][2]=1;
}
void initializare(int a, int b, int c)
{
A[0][0]=a;
A[0][1]=b;
A[0][2]=c;
A[1][0]=1;
A[2][1]=1;
A[1][1]=0;
A[1][2]=0;
A[2][0]=0;
A[2][2]=0;
}
void copiere(int a[3][3], int b[3][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
a[i][j]=b[i][j];
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
rez_aux[i][j]=0;
}
}
}
void matricelapatrat()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
rez_aux[i][j]=0;
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
{
rez_aux[i][j]=rez_aux[i][j]+(A[i][k]*A[k][j])%modu;
}
}
}
copiere(A, rez_aux);
}
void puterematrice()
{
while(n)
{
if(n%2==1)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
{
rez_aux[i][j]=rez_aux[i][j]+(rez[i][k]*A[k][j])%modu;
}
}
}
copiere(rez, rez_aux);
}
matricelapatrat();
n/=2;
}
}
void rezultat()
{
sol=(rez[0][0]*z)%modu+(rez[0][1]*y)%modu+(rez[0][2]*x)%modu;
}
int main()
{
f>>t;
for(int i=1;i<=t;i++)
{
f>>x>>y>>z>>a>>b>>c>>n;
n-=2;
initializare(a, b, c);
initrez();
puterematrice();
rezultat();
g<<sol<<'\n';
}
return 0;
}