Pagini recente » Cod sursa (job #2514004) | Cod sursa (job #2788822) | Cod sursa (job #196735) | Cod sursa (job #400342) | Cod sursa (job #1136913)
#include <iostream>
#include <fstream>
using namespace std;
#define mod 666013
struct matrix
{
// e o matrice 3 X 3
long long x[4][4];
} mi,mf;
int t,it,x,y,z,a,b,c,n,r;
matrix operator * (matrix m1,matrix m2)
{
matrix r;
int l,c,i;
for (l=0;l<=3;l++)
for (c=0;c<=3;c++)
r.x[l][c]=0;
for (l=1;l<=3;l++)
for (c=1;c<=3;c++)
for (i=1;i<=3;i++)
{
r.x[l][c]+=m1.x[l][i]*m2.x[i][c];
r.x[l][c]%=mod;
}
return r;
}
matrix powmatrix3(matrix m,int n)
{
if (n==1)
return m;
matrix axm,rm;
int l,c;
if (n%2==1)
rm=m;
else
{
for (l=0;l<=3;l++)
for (c=0;c<=3;c++)
if (l==c)
rm.x[l][c]=1;
else
rm.x[l][c]=0;
}
axm=powmatrix3(m,n/2);
rm=rm*axm;
for (l=0;l<=3;l++)
for (c=0;c<=3;c++)
rm.x[l][c]%=mod;
rm=rm*axm;
for (l=0;l<=3;l++)
for (c=0;c<=3;c++)
rm.x[l][c]%=mod;
return rm;
}
int main(void)
{
FILE * f;
f=fopen("iepuri.in","r");
ofstream g("iepuri.out");
fscanf(f,"%d",&t);
for (it=1;it<=t;it++)
{
fscanf(f,"%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
mi.x[0][0]=mi.x[0][1]=mi.x[0][2]=mi.x[0][3]=mi.x[1][0]=mi.x[2][0]=mi.x[3][0]=0;
mi.x[1][1]=a;
mi.x[1][2]=b;
mi.x[1][3]=c;
mi.x[2][1]=mi.x[3][2]=1;
mi.x[2][2]=mi.x[2][3]=mi.x[3][1]=mi.x[3][3]=0;
mf=powmatrix3(mi,n-2);
r=mf.x[1][1]*z;
r%=mod;
r+=mf.x[1][2]*y;
r%=mod;
r+=mf.x[1][3]*x;
r%=mod;
g<<r<<'\n';
}
g.close();
return 0;
}