Pagini recente » Cod sursa (job #2243836) | Cod sursa (job #268182) | Cod sursa (job #2939799) | Cod sursa (job #2884357) | Cod sursa (job #2506114)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long long n,mat[5][5],m[5][5];
void inm(long long mat1[5][5],long long mat2[5][5])
{
long long c[5][5];
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
c[i][j]=0;
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
for(int k=1;k<=3;k++)
{
c[i][j]+=mat1[i][k]*mat2[k][j]%666013;
}
c[i][j]%=666013;
}
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
mat1[i][j]=c[i][j];
}
void power(long long mat[5][5],long long p)
{
while(p>0)
{
if(p%2==0)
{
inm(mat,mat);
p/=2;
}
else
{
inm(m,mat);
p--;
}
}
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
{
long long x,y,z,a,b,c,nr;
in>>x>>y>>z>>a>>b>>c>>nr;
mat[2][1]=mat[3][2]=1;
mat[1][3]=c;
mat[2][3]=b;
mat[3][3]=a;
mat[1][1]=mat[1][2]=mat[2][2]=mat[3][1]=0;
m[1][1]=m[2][2]=m[3][3]=1;
m[1][2]=m[1][3]=m[2][1]=m[2][3]=m[3][1]=m[3][2]=0;
power(mat,nr-2);
out<<(m[1][3]*x+m[2][3]*y+m[3][3]*z)%666013<<'\n';
}
return 0;
}