Pagini recente » Cod sursa (job #3168208) | Cod sursa (job #2398199) | Cod sursa (job #2967313) | Cod sursa (job #71855) | Cod sursa (job #2901173)
#include <fstream>
using namespace std;
ifstream cin ("iepuri.in");
ofstream cout ("iepuri.out");
int n;
long long b[5][5],rez[5][5],aux[5][5],ini[5][5],mat[5][5];
void ridicare(long long b[5][5],long long exp)
{
int i,j,k;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
if (i==j)
rez[i][j]=1;
else
rez[i][j]=0;
while (exp!=0)
if (exp%2==0)
{
exp=exp/2;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
for (k=1; k<=3; k++)
aux[i][j]=(aux[i][j]+(b[i][k]*b[k][j])%666013)%666013;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
{
b[i][j]=aux[i][j];
aux[i][j]=0;
}
}
else
{
exp--;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
for (k=1; k<=3; k++)
aux[i][j]=(aux[i][j]+(rez[i][k]*b[k][j])%666013)%666013;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
{
rez[i][j]=aux[i][j];
aux[i][j]=0;
}
}
}
int main()
{
int t,i,x,y,z,a,b,c;
cin>>t;
for (i=1; i<=t; i++)
{
cin>>x>>y>>z>>a>>b>>c>>n;
ini[1][1]=0; ini[1][2]=1; ini[1][3]=0;
ini[2][1]=0; ini[2][2]=0; ini[2][3]=1;
ini[3][1]=c; ini[3][2]=b; ini[3][3]=a;
mat[1][1]=x;
mat[2][1]=y;
mat[3][1]=z;
ridicare(ini,n-2);
cout<<((rez[3][1]*mat[1][1])%666013+(rez[3][2]*mat[2][1])%666013+(rez[3][3]*mat[3][1])%666013)%666013<<"\n";
}
return 0;
}