Pagini recente » Cod sursa (job #1068034) | Cod sursa (job #705400) | Cod sursa (job #2741423) | Cod sursa (job #1961258) | Cod sursa (job #3348215)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int nMax=2e5+5,MOD=666013;
ll t,n,m,k,x,y,z,a,b,c,d,cnt,ans,rez,sum,poz;
ll v[nMax],mat[4][4],mat1[4][4],mat2[4][4],matr[4][4],aux[4][4];
bool ok;
char ch;
string s;
map<int,int>mp;
void inm(ll mat1[4][4],ll mat2[4][4])
{
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
{
aux[i][j]=0;
for(int q=1; q<=3; ++q)
aux[i][j]=(aux[i][j]+mat1[i][q]*mat2[q][j])%MOD;
}
}
void fastPow(ll p,ll mat[4][4])
{
while(p)
{
if(p%2)
{
p--;
inm(mat,matr);
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
matr[i][j]=aux[i][j];
}
else
{
p/=2;
inm(mat,mat);
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
mat[i][j]=aux[i][j];
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
fin>>t;
while(t--)
{
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
mat[i][j]=matr[i][j]=0;
matr[1][1]=matr[2][2]=matr[3][3]=1;
fin>>x>>y>>z>>a>>b>>c>>n;
mat[1][2]=1;
mat[2][3]=1;
mat[3][1]=c,mat[3][2]=b,mat[3][3]=a;
fastPow(n-2,mat);
fout<<(x*matr[3][1]+y*matr[3][2]+z*matr[3][3])%MOD<<'\n';
}
}