Pagini recente » Cod sursa (job #2351731) | Cod sursa (job #2369739) | Cod sursa (job #1337078) | Cod sursa (job #2193454) | Cod sursa (job #1786798)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int MOD=666013;
long long int mat[5][5];
long long int iep[5][5];
long long int rez[5][5];
void clean()
{
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
rez[i][j]=0;
}
void solve(long long x,long long y,long long z,long long a,long long b,long long c,long long zile)
{
mat[2][1]=mat[3][2]=1;
mat[1][1]=mat[1][2]=mat[2][2]=mat[3][1]=0;
mat[1][3]=c; mat[2][3]=b; mat[3][3]=a;
iep[1][1]=x; iep[1][2]=y; iep[1][3]=z;
while(zile>0)
{
if(zile%2==1)
{
clean();
for(int i=1; i<=1; i++)
{
for(int j=1; j<=3; j++)
{
for(int k=1; k<=3; k++)
{
rez[i][j]=(rez[i][j]+(iep[1][k]*mat[k][j])%MOD)%MOD;
}
}
}
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
iep[i][j]=rez[i][j];
}
}
zile--;
}
clean();
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
for(int k=1; k<=3; k++)
{
rez[i][j]=(rez[i][j]+(mat[i][k]*mat[k][j])%MOD)%MOD;
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
mat[i][j]=rez[i][j];
zile=zile/2;
}
}
int main()
{
long long n,x,y,z,a,b,c,zile;
in>>n;
for(int i=1; i<=n; i++)
{
in>>x>>y>>z>>a>>b>>c>>zile;
solve(x,y,z,a,b,c,zile-2);
out<<iep[1][3]<<" ";
}
}