Pagini recente » Cod sursa (job #2130920) | Cod sursa (job #1215712) | Cod sursa (job #720033)
Cod sursa(job #720033)
#include <fstream>
#include <cstring>
using namespace std;
#define mod 666013
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long mat[3][3],sol[3][3],zile[3][1];
int x, y, z, A, B, C,n;
inline void read()
{
fin>>x >>y >>z >>A >>B >>C >>n;
memset(mat,0,sizeof(mat));
mat[0][1]=1;
mat[1][2]=1;
mat[2][0]=C;
mat[2][1]=B;
mat[2][2]=A;
zile[0][0]=x;
zile[1][0]=y;
zile[2][0]=z;
}
void immult(long long a[][3], long long b[][3], long long c[][3])
{
int i,j,k;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
for(k=0;k<3;++k)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;
}
void solve(int p)
{
long long aux[3][3], c[3][3];
memcpy(c,mat,sizeof(mat));
for(;p;p>>=1)
{
if(p&1)
{
memset(aux,0,sizeof(aux));
immult(mat,c,aux);
memcpy(mat,aux,sizeof(aux));
}
memset(aux,0,sizeof(aux));
immult(c,c,aux);
memcpy(c,aux,sizeof(aux));
}
memset(aux,0,sizeof(aux));
int i, j;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
aux[i][0]=(aux[i][0]+mat[i][j]*zile[0][j])%mod;
fout<<aux[2][0]<<'\n';
}
int main()
{
int t;
fin>>t;
for(;t;--t)
{
read();
solve(n-3);
}
return 0;
}